2010-09-15 50 views
6

的計算限制運行這段代碼如何解決的JavaScript

  document.write(parseFloat("999999999999999")); 
 
      document.write("<br>"); 
 
      document.write(parseFloat("555555555555555555555555.99")); 
 
      document.write("<br>"); 
 
      document.write(parseInt("9999999999999999.99")); 
 
    
 
      document.write("<br>"); 
 
      document.write(parseInt("88888888888888888",10)); 
 
      document.write("<br>"); 
 
      document.write(parseFloat("88888888888888888"));

你會發現,從字符串到一個有效數中的轉換是馬車。這是JavaScript在15位數字(?)中的一個已知限制。我知道如果這是一個JS限制,那麼我們無法做任何事情。但在ajax企業世界中,我們將始終需要在瀏覽器中計算大量數據。隨着服務器端node.js的出現,這已經不再可容忍了,社區需要找到一個解決方案來解決這個問題,如果不能解決這個問題,就一勞永逸。

我的老闆發現一個high precision Javascript calculator,但它是CPU佔用。另一種解決方案是將其提供給服務器端,但這會增加「討厭」,這是一種反模式。我問的是,你將如何解決這個問題?

請糾正我如果我在上面所述的任何事情中有錯誤。

+0

是的,Javascript不能處理任意的精確數字,但有很多庫來規避這個問題。谷歌爲「bigdecimal圖書館js」。 – georg 2015-01-22 13:30:03

回答

1

如果JavaScript無法解析巨大的數字,那麼它很可能無法對它們做任何有用的事情,例如計算(沒有您發佈鏈接的內存密集型計算器)。如果您需要顯示數字,爲什麼不使用Ajax請求?只要嘗試將多個數字到字符串操作合併到一個請求中即可。

+0

+1在這種情況下,額外的「chattiness」不是反模式,因爲你的問題是JavaScript不支持數字的小數精度。 – 2015-01-22 13:40:12