您好,我使用的是Microsoft VB 2012,但双精度总和存在问题。
这个简单的代码复制了它:
Dim result As Double = 0
Dim amount1 As Double = 81.83
Dim amount2 As Double = 50.0
result += amount1
result += amount2
结果等于131.82999999998而不是131.83
实际上:
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)
有人可以解释吗?
最好的问候大卫
双精度值只能精确表示某些数字。大多数值只能近似。有关更多详细说明,请参见Wikipedia。基本上,您有固定数量的十进制数字,具体取决于浮点数的大小(比较单数和双数)以及代表该数字的指数。因此,即使是简单的计算也会产生一些舍入误差。
为避免这种情况,您可以使用Decimal
精确表示的数据类型,该数据类型通常用于财务计算,例如避免这些错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句