Dart - 减去一些双精度值会给出错误的结果
Dart - Subtracting some double values gives wrong result
我随机选了两个 double
号码:
double a = 7918.52;
double b = 5000.00;
我希望从 a - b
得到 2918.52
。
好吧,它给了我 2918.5200000000004
的结果,这看起来很奇怪。
print(a - b); // -> 2918.5200000000004
但是如果我把double a
改成7918.54
,我会得到预期的结果2918.54
。
有人可以向我解释为什么某些 double
值会导致意外的舍入问题而其他值不会吗?
据我所知,原因是floating-point arithmetic and the fact that Dart uses the IEEE 754 standard。
所有使用 floating-point 算术的语言都会出现这种情况。您可以通读 similar questions 关于其他编程语言的内容。
General question about floating-point arithmetic 在现代编程语言中。
我随机选了两个 double
号码:
double a = 7918.52;
double b = 5000.00;
我希望从 a - b
得到 2918.52
。
好吧,它给了我 2918.5200000000004
的结果,这看起来很奇怪。
print(a - b); // -> 2918.5200000000004
但是如果我把double a
改成7918.54
,我会得到预期的结果2918.54
。
有人可以向我解释为什么某些 double
值会导致意外的舍入问题而其他值不会吗?
据我所知,原因是floating-point arithmetic and the fact that Dart uses the IEEE 754 standard。
所有使用 floating-point 算术的语言都会出现这种情况。您可以通读 similar questions 关于其他编程语言的内容。
General question about floating-point arithmetic 在现代编程语言中。