【问题标题】:VB.NET CALCULATES WRONGVB.NET 计算错误
【发布时间】:2014-12-21 10:59:20
【问题描述】:

我做了一个 sodavending mashine,它可以显示价格,你付了多少钱,它可以给你退款,但由于某种原因,程序开始计算错误,前几天在这里运行良好,并且我没有更改我的代码,所以例如我将苏打水加到 18 克朗,然后我在机器里放了 5 克朗,然后我按付款,它出于某种原因说这是你付了很多钱,然后给你 -13 kr 回来​​了,前几天这里没有这样做,正如我所说,我没有更改代码。这是一段让我烦恼的代码:(贵重物品是丹麦语)

'Her fortæller jeg om man har givet det beløb man skal
Private Sub ButtonBetal_Click(sender As Object, e As EventArgs) Handles ButtonBetal.Click
    If TextBoxBeløb.Text = TextBoxPris.Text Then
        MsgBox("Værsgo")
    End If

    If TextBoxBeløb.Text < TextBoxPris.Text Then
        MsgBox("Ikke nok penge")
    End If

    If TextBoxBeløb.Text > TextBoxPris.Text Then
        MsgBox("Her er de overskyende penge og din sodavand :)")
    End If

    If TextBoxBeløb.Text > TextBoxPris.Text Then
        TextBoxPengeTilbage.Text = TextBoxBeløb.Text - TextBoxPris.Text
    End If
End Sub

如果有人能帮上忙,我会很高兴的

【问题讨论】:

  • 当您调试它时,它在哪里具体失败了?为什么要对 text 值而不是 numeric 值执行数学运算?
  • 比较前请转换成整数
  • Option Strict Off 声称又一个受害者。此选项应开启。说真的。

标签: vb.net calculator


【解决方案1】:

您似乎在比较字符串值,而不是数字。按字母顺序,“13”小于“5”,这就是它不起作用的原因。在进行比较和计算之前,您需要将文本值转换为数字。

类似:(希望这是正确的,我是 C# 程序员,而不是 VB)

Dim Beløb as Decimal = Convert.ToDecimal(TextBoxBeløb.Text)
Dim Pris as Decimal = Convert.ToDecimal(TextBoxPris.Text)

If Beløb = Pris Then
    MsgBox("Værsgo")
End If

If Beløb < Pris Then
    MsgBox("Ikke nok penge")
End If

If Beløb > Pris Then
    MsgBox("Her er de overskyende penge og din sodavand :)")
    TextBoxPengeTilbage.Text = Beløb - Pris
End If

【讨论】:

  • 鉴于 OP 问题中的整数示例,我认为 Kr 相当于一美分/美分。如果不是这样,那么是的,它们应该是小数。
  • 更新为使用更合适的小数。
  • 呵呵,没有kr(克朗)是丹麦货币。 :)
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多