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 在现代编程语言中。