我刚刚看到这段代码:
Dim d As Double
For i = 1 To 10
d = d + 0.1
Next
MsgBox(d)
MsgBox(d = 1)
MsgBox(1 - d)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我的原因吗?为什么d要设置1?
浮点类型和整数类型无法直接比较,因为它们的二进制表示形式不同.
0.1作为浮点类型添加十次的结果可能是接近 1 的值,但不完全是.
比较浮点值时,您需要使用值可以不同的最小值,并且仍然被视为相同的值(此值通常称为epsilon).该值取决于应用程序.
我建议阅读每个计算机科学家应该知道的关于浮点运算的内容,以进行深入的讨论.
至于comaring 1来1.0-这些都是不同的类型,因此不会相互比较.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |