好的,所以我知道有些数字不能用二进制正确表示,就像 1/3 不能完全用十进制表示一样。

那么为什么当我 console.log(0.3) 它返回 0.3
但是当我 console.log(0.1 + 0.2) 它返回 0.30000000000000004

当简单地输出 0.3 而不是当添加发生时,它为什么会解释错误(如果它甚至是)?

最佳答案

假设我们近似十进制的 1/3 和 2/3。

1/3 = 0.333
2/3 = 0.667

我们加上 1/3+1/3:
1/3+1/3 = 0.333 + 0.333 = 0.666

我们没有得到 2/3 的近似值。将 1/3 舍入为我们可以用十进制表示的值并不会产生等于我们舍入 2/3 时得到的数字的一半。

同样的事情发生在二进制中。我们将 0.1 和 0.2 四舍五入为我们可以用二进制表示的数字,但是近似值的总和与我们近似 0.3 得到的值略有不同。我们得到了更高的值,结果显示为 0.30000000000000004

关于javascript - 一般浮点数学查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21490511/

10-11 22:28