這裏輸出的長號碼是代碼:的Bug在JavaScript中
var q = 10000000000000011;
console.log(q);
輸出將是:
10000000000000012
如果我試圖輸出10000000000000010
或10000000000000012
,一切都很好。 轉換爲字符串也無濟於事。 如何避免此錯誤?
這裏輸出的長號碼是代碼:的Bug在JavaScript中
var q = 10000000000000011;
console.log(q);
輸出將是:
10000000000000012
如果我試圖輸出10000000000000010
或10000000000000012
,一切都很好。 轉換爲字符串也無濟於事。 如何避免此錯誤?
JavaScript中的最大安全整數(2^53 - 1)。這是9007199254740991.你需要使用一個大整數庫來存儲這麼大的數字
'Number.MAX_SAFE_INTEGER' – arthurakay
我會離開這裏,有人可能會覺得它有用...或不... http:// ecma262-5.com/ELS5_HTML.htm#Section_8.5 – Adriani6
在JavaScript長的號碼,如12300000
轉換爲123e5
和0.00123
將被轉換爲123e-5
,這將導致瀏覽器中的錯誤,所以它將圍繞它。 檢查W3Schools瞭解更多信息。
像999999999999999
這樣的數字將是999999999999999
,而9999999999999999
將是10000000000000000
。
https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number – evolutionxbox
正如已經指出的那樣,在JS的最大整數尺寸爲Number.MAX_SAFE_INTEGER
(9007199254740991)
所以,如果你想要更大的數字,你就必須發揮創意,並使用類似科學記數法:
10000000000000011 ~= 1 × 10^9 (1e9)
Javascript無法準確表示這麼大的數字 - 相反,它會轉換爲最接近的偶數。有很多庫處理大數字。 – ankr
謝謝你們的快速回復。鏈接幫助我的情況下https://github.com/MikeMcl/big.js – scipios