2015-08-31 51 views
1

我打開終端瀏覽器(例如Chrome)。JavaScript中的parseInt行爲

我寫這篇文章:

var y = "11000011010101011"; 

「11000011010101011」

parseInt(y) 

我預計11000011010101011但它返回我11000011010101012

有人知道爲什麼嗎?

+0

我猜你的電話號碼太大了。請閱讀:http://bjola.ca/coding/largest-integer-in-javascript/ –

回答

6

Javascript中的每個數字代表一個double precision floating point。 JavaScript可以精確地表示只有9007199254740991(2^53 - 1)的整數。一旦你超過這個限制,你將失去精確性。

+1

又名['Number.MAX_SAFE_INTEGER'](https://developer.mozilla.org/en-US/docs/Web/JavaScript /參考/ Global_Objects /數量/ MAX_SAFE_INTEGER)。 – robertklep

0

根據this頁面。

Javascript中的所有數字都是64位浮點數,整數由53位mantisa表示。 因此,您不能存儲大於2^53 -1且小於-2^53 +1的整數,而不會丟失精確度(爲了能夠存儲它,Javascript會循環您的數字)。

您的號碼大於2^53 -1。即使一個字符串可以存儲它,爲了將它存儲在一個「Number」變量中,它必須被四捨五入,失去精度並返回一個稍微不同的數字。

相關問題