WRONG SUM OF DOUBLES IN VB .NET
本问题已经有最佳答案,请猛点这里访问。
您好,我使用的是Microsoft VB 2012,有一个双精度求和的问题。
这个简单的代码复制了它:
1 2 3 4 5 | Dim result As Double = 0 Dim amount1 As Double = 81.83 Dim amount2 As Double = 50.0 result += amount1 result += amount2 |
结果等于131.829999998而不是131.83
事实上:
1 2 3 4 | Dim test1 As Double = 81.83 + 50.0 '(= 131.82999999998 wrong) Dim test2 As Double = 81.83 + 50 '(= 131.82999999998 wrong) Dim test3 As Double = 81.83 + 10 '(= 91.83 OK) Dim test4 As Double = 81.82 + 50.0 '(= 131.82 OK) |
有人能解释一下吗?
最好的问候戴维
双精度值只能精确地表示某些数字。大多数值只能近似。更多详细解释请参见维基百科。基本上,小数位数是固定的,这取决于浮点数的大小(比较单位数和双位数)和表示该数字的指数。因此,即使是简单的计算也可能产生一些舍入误差。
为了避免这种情况,您可以使用像