在VB中为什么(1 = 1)是假的

Bar*_*lla 4 vb.net

我刚刚看到这段代码:

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

Ode*_*ded 8

浮点类型和整数类型无法直接比较,因为它们的二进制表示形式不同.

0.1作为浮点类型添加十次的结果可能是接近 1 的值,但不完全是.

比较浮点值时,您需要使用值可以不同的最小值,并且仍然被视为相同的值(此值通常称为epsilon).该值取决于应用程序.

我建议阅读每个计算机科学家应该知道的关于浮点运算的内容,以进行深入的讨论.


至于comaring 11.0-这些都是不同的类型,因此不会相互比较.