0
我有一个数字n
这是16位数字(1111111111111111
)。当我添加另一个1
到这个数字(使它11111111111111111
,17位数字长)它显示为11111111111111112
。JavaScript的最大数量大小与尾随零不相同
这是可以理解的,因为它比Number.MAX_SAFE_INTEGER
大,但是如果我添加了一个0
代替(使它11111111111111110
,仍有17位长),显示正确数量为11111111111111110
。
let a = 11111111111111111;
let b = 11111111111111110;
console.log(a, b); // 11111111111111112 11111111111111110
行为上面任何最终位发生时,除了0
。这种行为差异的原因是什么?
我已经看过"Large numbers erroneously rounded in Javascript",但这并不能解释为什么在添加一个非零数字是它是圆的,而不是在添加一个零。
看起来像一个整数舍入问题在javascript – mtizziani
Downvoter:为什么downvote?这是一个很好解释的问题,我找不到重复的问题。 –
可能重复的[大量错误地在Javascript中舍入](http://stackoverflow.com/questions/1379934/large-numbers-erroneously-rounded-in-javascript) – Xufox