Dim i As Integer
Dim Sum As Single
For i = 0 To 100
Sum = Sum + 0.01
Next i
Text1.Text = Sum
和等于 1.01,但在 Text1.Text 显示 1.009999
Dim i As Integer
Dim x As Single
Dim y As Single
For i = 0 To 1000
x = x + 0.01
Next i
y = 10.082 - 0.072
If (x = y) Then Text3.Text = "相等"
Text4.Text = x
Text5.Text = y
最后不会显示"相等!“因为 10.01 不能完全表示 可以修改成如下:
Dim i As Integer
Dim x As Single
Dim y As Single
For i = 0 To 1000
x = x + 0.01
Next i
y = 10.082 - 0.072
If ((x - y) < 0.01 And (x - y) > -0.01) Then
Text3.Text = "Equal!"
End If
Text4.Text = x
Text5.Text = y
此外需要注意,操作长整形数学的时候 Visual Basic 建议存储中间值。
例如计算 CInt(4.555 * 100) 455.5 是CInt() 函数中临时存储。 如果在两个的步骤中分为计算 x = 4.555 * 100 和 CInt(x),避免此内部存储,避免浮点舍入错误。
下面是其他常见的浮点错误: 舍入错误-此错误导致,在所有位二进制数不能在计算中使用。 溢出和下溢-太大或太小,由该数据类型结果时将发生此错误。 部门通过极少数的这可以触发"被零除"错误或可能会产生不正确的结果。 注意 : 这不是特别是 Visual Basic 问题。 则存在与 C、 FORTRAN 或存储浮点数字根据为 IEEE 标准的任何其他语言相同的问题。