我打開終端瀏覽器(例如Chrome)。JavaScript中的parseInt行爲
我寫這篇文章:
var y = "11000011010101011";
「11000011010101011」
parseInt(y)
我預計11000011010101011
但它返回我11000011010101012
。
有人知道爲什麼嗎?
我打開終端瀏覽器(例如Chrome)。JavaScript中的parseInt行爲
我寫這篇文章:
var y = "11000011010101011";
「11000011010101011」
parseInt(y)
我預計11000011010101011
但它返回我11000011010101012
。
有人知道爲什麼嗎?
Javascript中的每個數字代表一個double precision floating point。 JavaScript可以精確地表示只有9007199254740991(2^53 - 1)的整數。一旦你超過這個限制,你將失去精確性。
又名['Number.MAX_SAFE_INTEGER'](https://developer.mozilla.org/en-US/docs/Web/JavaScript /參考/ Global_Objects /數量/ MAX_SAFE_INTEGER)。 – robertklep
只有9007199254740991
是javascript中的安全整數。 這情況有點像
9007199254740992 + 1 // 9007199254740992
9007199254740993 + 1 // 9007199254740992
9007199254740994 + 1 //9007199254740996
請詳見
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number http://www.2ality.com/2012/04/number-encoding.html
的鏈接也看到這樣一個
how addition of Number works on max limit numbers?
這是dublicate問題,看到原來的
根據this頁面。
Javascript中的所有數字都是64位浮點數,整數由53位mantisa表示。 因此,您不能存儲大於2^53 -1且小於-2^53 +1的整數,而不會丟失精確度(爲了能夠存儲它,Javascript會循環您的數字)。
您的號碼大於2^53 -1。即使一個字符串可以存儲它,爲了將它存儲在一個「Number」變量中,它必須被四捨五入,失去精度並返回一個稍微不同的數字。
我猜你的電話號碼太大了。請閱讀:http://bjola.ca/coding/largest-integer-in-javascript/ –