n = "11004691915666669"
parseInt(n)
parseInt(n, 10)
兩個結果是:11004691915666668 這是關閉的。我測試了一些其他值,並正確轉換。這是庫中的錯誤還是有更好的轉換方法?javascript parseInt()失敗?
n = "11004691915666669"
parseInt(n)
parseInt(n, 10)
兩個結果是:11004691915666668 這是關閉的。我測試了一些其他值,並正確轉換。這是庫中的錯誤還是有更好的轉換方法?javascript parseInt()失敗?
參見this SO question for more details。您的值超出了Javascript可以完全準確表示的最大整數。
在引擎蓋下Javascript不理解整數,所有的浮點數。當達到非常大的數字時,會降低精度。
從MDN給出的Javascript參考here。
的整數範圍內的數字定義如下:
var biggestInt = 9007199254740992;
var smallestInt = -9007199254740992;
這是爲什麼,因爲你的電話號碼超過的Javascript預設的biggestInt值時,parseInt函數方法僅返回位於整數範圍內的整數值對於上面定義的Javascript中的數字。
JavaScript將處理精度高達16位數的數字。 –
嘿,這很近,不是嗎? – dandavis
問題是'Number.MAX_SAFE_INTEGER <11004691915666669' – Oriol