飞镖-减去一些双精度值会得出错误的结果

时间:2019-06-16 13:45:45

标签: dart floating-point double floating-accuracy

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

double a = 7918.52;
double b = 5000.00;

我希望能从2918.52获得a - b
好吧,它给了我2918.5200000000004的结果,这似乎很奇怪。

print(a - b); // -> 2918.5200000000004

但是,如果我将double a更改为7918.54,我将得到2918.54的预期结果。

有人可以向我解释为什么某些double值会导致不可预知的舍入问题,而另一些则不会吗?

1 个答案:

答案 0 :(得分:3)

这样做的原因是floating-point arithmetic,而就我而言,达特使用IEEE 754 standard的事实。

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

General question about floating-point arithmetic(使用现代编程语言)。