【发布时间】:2014-08-18 12:14:50
【问题描述】:
您好,我正在使用 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)
谁能解释一下?
最好的问候 大卫
【问题讨论】:
-
这个大概是十万题左右的副本。如果您正在处理货币,请不要使用浮点数,使用整数值(例如美分而不是美元)。