您好我正在使用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)
任何人都可以解释一下吗?
最诚挚的问候 大卫
答案 0 :(得分:-1)
双精度值只能准确表示某些数字。大多数值只能近似值。 See Wikipedia for some more detailed explanation. 您基本上有一个固定的十进制数字,具体取决于浮点数的大小(比较Single和Double)和表示数字的指数。由于这一点,即使是简单的计算也可能产生一些舍入误差。
为避免这种情况,您可以使用精确表示的Decimal
这样的数据类型,通常用于财务计算,以避免这些错误。