首页 新闻 会员 周边

if语句输出问题

0
悬赏园豆:5 [已解决问题] 解决于 2021-02-19 16:49

编程小白请教各位前辈一个问题,我的主程序如下:

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后面的语句,请问这是为什么?

LFMB的主页 LFMB | 初学一级 | 园豆:158
提问于:2021-02-19 15:39
< >
分享
最佳答案
1

vb默认精度问题。
默认小数是按Double类型计算的,在计算时会有损失。
((10 * 7.2) \ (10 * 1.2)) * 1.2 计算出来的值并不是7.2,而是7.19999……
可以使用Decimal类型来判断。

收获园豆:5
leslie_xin | 菜鸟二级 |园豆:404 | 2021-02-19 16:19

谢谢您的解答,根据您的提示,解决了我想了很久的问题。我更改之后的程序是这样的:
Dim a As Decimal = ((10 * 7.2) \ (10 * 1.2)) * 1.2
If a = 7.2 Then
MsgBox("true")
Else
MsgBox("false")
End If
再次表示衷心的感谢!

LFMB | 园豆:158 (初学一级) | 2021-02-19 16:45
其他回答(1)
0

把结果打印出来看看不就知道了

包子心的土豆 | 园豆:133 (初学一级) | 2021-02-19 16:17

通过msgbox输出的结果为7.2,还是找不出来,楼下的解答应该是原因吧。谢谢您的解答。

支持(0) 反对(0) LFMB | 园豆:158 (初学一级) | 2021-02-19 16:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册