编程小白请教各位前辈一个问题,我的主程序如下:
If ((10 * 7.2) \ (10 * 1.2)) * 1.2 = 7.2 Then
MsgBox(((10 * 7.2) \ (10 * 1.2)) * 1.2)
MsgBox("true")
Else
MsgBox(((10 * 7.2) \ (10 * 1.2)) * 1.2)
MsgBox("false")
End If
问题:条件中等号左边算出的结果为7.2,条件为真才对,运行结果却执行的是else后面的语句,请问这是为什么?
vb默认精度问题。
默认小数是按Double类型计算的,在计算时会有损失。
((10 * 7.2) \ (10 * 1.2)) * 1.2 计算出来的值并不是7.2,而是7.19999……
可以使用Decimal类型来判断。
谢谢您的解答,根据您的提示,解决了我想了很久的问题。我更改之后的程序是这样的:
Dim a As Decimal = ((10 * 7.2) \ (10 * 1.2)) * 1.2
If a = 7.2 Then
MsgBox("true")
Else
MsgBox("false")
End If
再次表示衷心的感谢!
把结果打印出来看看不就知道了
通过msgbox输出的结果为7.2,还是找不出来,楼下的解答应该是原因吧。谢谢您的解答。