> 76.74 -20;
56.739999999999995
> 96.74 -20;
76.74
> 66.74 -20;
46.739999999999995
> 76.74 -20;
56.739999999999995
> 46.74 - 20;
26.740000000000002
> 86.74 - 20;
66.74
我使用的是64位Ubuntu,我在iojs上尝试这个。终端也失败了:
echo $((76.74-40))
36.739999999999995
答案 0 :(得分:0)
因为floating point数学的精度有限,并且并非每个实数都可以表示,即使在从最小值到最大值的范围内也是如此。
与整数不同,实数的集合是无数的无穷大,因此这不是一个可修复的问题。 (好吧,除了使用别的东西。例如定点,任意精度,或者在打印前简单地舍入。(例如,打印到小数点后的2个位置。)