如何在vb.net中正确更新我的总计(使用textchanged事件)

如何在vb.net中正确更新我的总计(使用textchanged事件),vb.net,Vb.net,我在文本框中看到的是折扣。文本框在您键入时与标签对话,并相应地对其进行更新 问题是,一旦折扣率达到10或以上,折扣将减少5美分,并随着数字的增加而增加 有人能告诉我为什么吗 Private Sub discount_rate_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles discount_rate.TextChanged Select Case radio C

我在文本框中看到的是折扣。文本框在您键入时与标签对话,并相应地对其进行更新

问题是,一旦折扣率达到10或以上,折扣将减少5美分,并随着数字的增加而增加

有人能告诉我为什么吗

Private Sub discount_rate_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles discount_rate.TextChanged
    Select Case radio
        Case "one"
            If discount_rate.Text = "" Then
                Label17.Text = FormatCurrency(a_total.Text * 50)
                Label19.Text = FormatCurrency(Label17.Text * 0.06)
                a = CDbl(Label17.Text)
                b = CDbl(Label19.Text)
                Label21.Text = FormatCurrency(a + b)
            Else
                discount = discount_rate.text / 100
                discountrate = Label17.Text * discount
                dis_count1.Text = FormatCurrency(discountrate)
                Label17.Text = FormatCurrency((a_total.Text * 50) - discountrate)
                Label19.Text = FormatCurrency(Label17.Text * 0.06)
                a = CDbl(Label17.Text)
                b = CDbl(Label19.Text)
                Label21.Text = FormatCurrency(a + b)

首先,货币永远不要使用浮点。Double和float是浮点

改用十进制

在你的情况下,这将使它像这样

Dim _total as Decimal = Convert.ToDecimal(a_total.Text)
Dim _ihavenoidea = Convert.ToDecimal(Label17.Text)
Label17.Text = FormatCurrency(_total * 50)
Label19.Text = FormatCurrency(ihavenoidea  * 0.06)
a = Convert.ToDecimal(Label17.Text)
b = Convert.ToDecimal(Label19.Text)
Label21.Text = FormatCurrency(a + b)

对于使用描述性变量和控件名称也有一些说法,需要维护代码的人会为此感谢您。

我发现我做得不对discountrate=Label17.Text*discount不是对实际变量进行检查和多倍计算,而是将新变量相乘