2016-03-04 83 views
0
n = "11004691915666669" 
parseInt(n) 
parseInt(n, 10) 

兩個結果是:11004691915666668 這是關閉的。我測試了一些其他值,並正確轉換。這是庫中的錯誤還是有更好的轉換方法?javascript parseInt()失敗?

+3

JavaScript將處理精度高達16位數的數字。 –

+0

嘿,這很近,不是嗎? – dandavis

+0

問題是'Number.MAX_SAFE_INTEGER <11004691915666669' – Oriol

回答

3

參見this SO question for more details。您的值超出了Javascript可以完全準確表示的最大整數。

在引擎蓋下Javascript不理解整數,所有的浮點數。當達到非常大的數字時,會降低精度。

0

從MDN給出的Javascript參考here

的整數範圍內的數字定義如下:

var biggestInt = 9007199254740992; 
var smallestInt = -9007199254740992; 

這是爲什麼,因爲你的電話號碼超過的Javascript預設的biggestInt值時,parseInt函數方法僅返回位於整數範圍內的整數值對於上面定義的Javascript中的數字。