VB .NET中错误的双重错误

时间:2014-06-27 11:38:32

标签: .net vb.net sum

您好我正在使用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)

任何人都可以解释一下吗?

最诚挚的问候 大卫

1 个答案:

答案 0 :(得分:-1)

双精度值只能准确表示某些数字。大多数值只能近似值。 See Wikipedia for some more detailed explanation. 您基本上有一个固定的十进制数字,具体取决于浮点数的大小(比较Single和Double)和表示数字的指数。由于这一点,即使是简单的计算也可能产生一些舍入误差。

为避免这种情况,您可以使用精确表示的Decimal这样的数据类型,通常用于财务计算,以避免这些错误。