我选择了两个随机的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
值会导致不可预知的舍入问题,而另一些则不会吗?
答案 0 :(得分:3)
这样做的原因是floating-point arithmetic,而就我而言,达特使用IEEE 754 standard的事实。
所有使用浮点运算的语言都会发生这种情况。您可以阅读关于其他编程语言的similar questions。