Dart - 减去一些双精度值会给出错误的结果

Zok*_*oka 7 floating-point double floating-accuracy dart

我随机选择了两个double数字:

double a = 7918.52;
double b = 5000.00;
Run Code Online (Sandbox Code Playgroud)

我希望2918.52a - b.
嗯,它给了我一个结果2918.5200000000004,这看起来很奇怪。

print(a - b); // -> 2918.5200000000004
Run Code Online (Sandbox Code Playgroud)

但如果我改为double a7918.54我将得到预期的结果2918.54

有人可以向我解释为什么某些double值会导致意外的舍入问题而其他值则不会?

cre*_*not 7

就我而言,其原因在于浮点运算以及 Dart 使用IEEE 754 标准的事实。

所有使用浮点运算的语言都会发生这种情况。您可以阅读有关其他编程语言的类似问题

有关现代编程语言中浮点运算的一般问题。