2017-08-29 54 views
0

這裏輸出的長號碼是代碼:的Bug在JavaScript中

var q = 10000000000000011; 
console.log(q); 

輸出將是:

10000000000000012 

如果我試圖輸出1000000000000001010000000000000012,一切都很好。 轉換爲字符串也無濟於事。 如何避免此錯誤?

+0

Javascript無法準確表示這麼大的數字 - 相反,它會轉換爲最接近的偶數。有很多庫處理大數字。 – ankr

+0

謝謝你們的快速回復。鏈接幫助我的情況下https://github.com/MikeMcl/big.js – scipios

回答

4

JavaScript中的最大安全整數(2^53 - 1)。這是9007199254740991.你需要使用一個大整數庫來存儲這麼大的數字

+0

'Number.MAX_SAFE_INTEGER' – arthurakay

+1

我會離開這裏,有人可能會覺得它有用...或不... http:// ecma262-5.com/ELS5_HTML.htm#Section_8.5 – Adriani6

0

在JavaScript長的號碼,如12300000轉換爲123e50.00123將被轉換爲123e-5,這將導致瀏覽器中的錯誤,所以它將圍繞它。 檢查W3Schools瞭解更多信息。

999999999999999這樣的數字將是999999999999999,而9999999999999999將是10000000000000000

+0

https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number – evolutionxbox

0

正如已經指出的那樣,在JS的最大整數尺寸爲Number.MAX_SAFE_INTEGER(9007199254740991)

所以,如果你想要更大的數字,你就必須發揮創意,並使用類似科學記數法:

10000000000000011 ~= 1 × 10^9 (1e9)