猿问

关于VB的Single运行问题,以下有具体的代码例子,麻烦帮忙看看!

运行一下代码
Private Sub Command1_Click()
Dim n As Single
n = 0
For s = 1 To 50
n = n + 0.1
Next s
Print n
End Sub
输出n的结果竟然是 4.999998 ,不是5才正确吗
还有这个
Private Sub Command1_Click()
Dim s, x, y As Single
x = 0.1
y = 0.1
s = x + y
Print s
End Sub
输出的结果是.200000001490116 ,为什么后面会...?
但是我把它改成
Private Sub Command1_Click()
Dim x, y, s As Single
x = 0.1
y = 0.1
s = x + y
Text1.Text = s
End Sub
就正常了。
是什么原因??

PIPIONE
浏览 329回答 2
2回答

跃然一笑

不必纠结这些小问题,只要知道计算机里的浮点数都是用整数弄出来的就OK了。就像没有精确的3^(0.5)一样。通常使用的时候,考虑精度问题的话会自己进行控制,比如使用double,或者ground去调节精度。

白衣非少年

浮点数的精度不要斤斤计较,如果想保持精度,使用ROUND函数控制即可。例如:Print Round(s,2)这样结果就是.02
随时随地看视频慕课网APP
我要回答