2015-10-02 71 views
0

我想一個字符串在JavaScript中轉換數字,但這裏是我的問題:字符串號碼有誤

var string = "068999999501111443"; 
parseInt(string); // 68999999501111440 
Number(string); // 68999999501111440 

爲什麼會出現這種情況,如何解決?

謝謝

+3

因爲該數字大於'Number.MAX_SAFE_INTEGER'。 – fuyushimoya

+0

@limelights - 不,不是。如果是,那麼輸出將與輸入有很大不同。 – Simba

+2

你超過整數最大長度+/- 9007199254740991,所以JavaScript將有處理這個數字的問題http://stackoverflow.com/questions/307179/what-is-javascripts-highest-integer-value-that-a-數字可以去無洛杉磯 – baao

回答

1

這是因爲數量太大,無法準確存儲。它被存儲爲一個浮點數,它只能存儲一定數量的精度。除了它的最大精度之外,你會看到奇怪的舍入誤差。

對於具有大量小數位的小數,您會得到相似的效果。這是更爲人熟知的,因爲它往往會更頻繁地發生,但這與此處發生的效果完全相同。