在向其中添加一些值之后,我遇到了一个带有double变量的怪异案例。多次将(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 >> !!!!
还
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
。
问题在于双精度取整。
如果更改数据类型十进制,则问题已解决:
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
这是关于C#的,但是我想vb.net也是一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句