2011-11-02 43 views
8

我設置了一個將緊湊型數據字符串解析爲JSON的系統。我使用19位數字來存儲ID。不幸的是,任何大於17位的數字,parseFloat()都會使最後幾位數字變成四捨五入。解析浮點數有舍入限制嗎?我怎樣才能解決這個問題?

這打破了整個數據字符串。我能解決這個問題嗎?

例如8246295522085275215被轉化爲8246295522085276000。爲什麼是這樣?

http://jsfiddle.net/RobertWHurst/mhZ7Q/

+0

你不沒有那麼多物體,對吧?然後使用以「1」開頭的常規增量ID。如果您想阻止人們通過更改ID檢索其他對象,請添加一個包含一些隨機值的附加參數 - 然後您仍然可以使用正確的ID(也在數據庫中作爲主鍵),並且當用戶嘗試因爲他不知道其他項目的隨機字符串,所以修改URL他運氣不好。 – ThiefMaster

+1

如果這是一個ID,爲什麼要把它當作一個數字呢?把它保存爲一個字符串 –

回答

12

JavaScript的僅具有一個數字類型,這是一個IEEE 754雙精度floating-point。這意味着,最多可以有52位的精度,這比15位小數多一點。

如果你需要比這更精確,你必須使用一個BIGNUM庫或處理字符串。

1

嘗試這些 1.使用的一個字符串 2.一分爲二的數量和更小的部分保存到一個數組 3. Bignum的庫 4.使用一個較小的數字,如果你能

相關問題