下面的代碼的JavaScript整數溢出
console.log(Math.pow(2, 53));
console.log(Math.pow(2, 53) + 1);
產生了兩種計算完全相同的輸出:
9007199254740992
爲什麼?
下面的代碼的JavaScript整數溢出
console.log(Math.pow(2, 53));
console.log(Math.pow(2, 53) + 1);
產生了兩種計算完全相同的輸出:
9007199254740992
爲什麼?
您看到的結果是因爲Math.Pow()
正在處理浮點數字,並且當您到達十六進制數字時,您不一定會將一個值添加到該值的最低有效十進制數字,並期望結果發生變化。
通常,在64位(8字節)IEEE 754浮點二進制值中,尾數爲53位(包括隱含的1位)。你的計算Math.Pow(2, 53)
要求保證尾數有54位。如果您添加2,您應該看到更改。
可能的重複:http://stackoverflow.com/questions/307179/what-is-javascripts-max-int-whats-the-highest-integer-value-a-number-can-go-to – 2011-01-30 01:03:01