2013-02-21 29 views
0

我正在使用javascript計算器,用戶可以在文本字段中輸入值並執行操作。 現在,如果用戶輸入了一個非常大的值 例如5345345345353453453453535 它被轉換爲5.345345345353453e + 24javascript中的大數字

我使用parsrInt()將其轉換爲整數。它給了我5. 這是錯誤的。 任何人都可以建議如何解決它?

+0

這可能是有用的:http://stackoverflow.com/questions/11124451/how-can-i-convert-numbers-into-scientific-notation – Schleis 2013-02-21 15:17:56

+1

可能重複的[如何處理javascript中的大數字]( http://stackoverflow.com/questions/4288821/how-to-deal-with-big-numbers-in-javascript) – JaredMcAteer 2013-02-21 15:18:16

回答

0

嘗試parseFloat而不是parseInt。

<script type="text/javascript"> 
    var value = parseFloat(5345345345353453453453535); 
    alert(value); 
</script> 
+0

這不會給你'5345345345353453453453535',但只有四捨五入的價值。 – 2013-02-21 15:22:35

3

javascript中的整數與每個數字一樣,存儲爲IEEE754雙精度浮點數。

所以你只能準確地存儲最多2^51(尾數的大小)的整數。

這意味着你將不得不設計另一種格式來處理大整數,或者使用像BigInteger.js這樣的現有庫(Google會建議其他幾個)。

2

Mozilla documentation摘自:

分析字符串參數,並返回指定基數 或鹼的整數。

因此parseInt()正在你的價值作爲一個字符串5.345345345353453e+24

然後將其忽略任何非整數值和分級這是一個小數(5.345 ...),然後評估這5


由於@dystroy指出,如果你想用你需要使用自定義格式,也可以使用預先存在的JavaScript庫,這些大量地進行計算。