在向双变量添加一些值后,我遇到了一个奇怪的情况。
当将 (0.2) 多次添加到双精度变量时会出现问题 - 我认为这只发生在 (0.2) - 例如:考虑以下代码:
Dim i As Double = 2
i = i + 0.2
MsgBox(i) '2.2
MsgBox(i > 2.2) 'False >> No problem
但如果我多次添加 (0.2):
Dim i As Double = 2
i = i + 0.2
i = i + 0.2
MsgBox(i) '2.4
Msgbox(i > 2.4) 'True >> !!!!
Also
Dim i As Double = 2
For x As Integer = 1 to 5
i = i + 0.2
Next
MsgBox(i) '3
Msgbox(i > 3) 'True >> !!!!
我用其他值尝试了相同的代码,但没有遇到这个问题:
Dim i As Double = 2
i = i + 0.5
i = i + 0.5
MsgBox(i) '3
Msgbox(i > 3) 'False >> No problem
有人对此有解释吗?
谢谢
如果您采用示例 3,您会发现结果实际上是3.0000000000000009
.
问题在于双精度数的舍入。
如果更改数据类型decimal,问题就得到解决:
Sub Main()
Dim i As Decimal = 2
For x As Integer = 1 To 5
i = i + 0.2
Next
MsgBox(i) '3
MsgBox(i > 3) 'False >> No problem
End Sub
This is http://csharpindepth.com/Articles/General/Decimal.aspx关于 C#,但我想,对于 vb.net 也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)