2016-09-24 112 views
-1

我有一個API用於生成帶有Erlang服務器的隨機地圖tileset,使用安全整數JavaScript可以向API請求良好,但問題是何時超過Number.MAX_SAFE_INTEGERJavaScript將科學記數法中不安全的整數轉換爲字符串

然後,在服務器我沒有整數原因JavaScript發送1e+21在科學計數法中的數字,而不是999999999999999999999和我需要像科學記數法字符串的數字。

如何在JavaScript中獲得像"999999999999999999999"這樣的字符串以發送到API而不是科學記數法字符串?存在一個只有數字的JavaScript小任意長數字庫?該地址是一個X和Y的位置數,需要正確的位置,而不是一個大型的圖書館,因爲需要良好的性能來渲染地圖,用於瀏覽器中的遊戲,而不是天文計算。

+1

檢查此:http://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript –

+0

在JavaScript 1e21' _is_是一個數字對應於該符號。如果您嘗試將其轉換爲字符串,它將會失敗''「+ 1e21 //」1e + 21「'然而_number_本身只是以科學記數法顯示,並不是字面上有'e' – vlaz

+1

@vlaz我知道我不能直接轉換,爲此我問 – JHG

回答

0

也許是更好的使用asm.js的優化小解決方案和處理字符串的添加和休息,數字,這個例子很簡單,但有可能做得更好:

var a = "999999"; 
var b = ""; 
var acarreo = 1|0; 
console.log(a); 
for(var i=a.length-1|0; i >= 0; i--){ 
    var j = parseInt(a[i])|0; 
    var j = j + acarreo|0; 
    if(j > 9){ 
     j-=10|0; 
     acarreo=1|0; 
    }else{ 
     acarreo=0|0; 
    } 
    b = j.toString() + b; 
} 
if(acarreo>0){ 
    a = acarreo.toString() + b; 
}else{ 
    a = b; 
} 
console.log(a); 
1

在這種情況下,一個可能的解決方案是不發送新的位置到服務器,並且只發送一個移動事件,那麼Erlang中的服務器就可以用任意長的數字計算新的位置(雖然對於一個很大的數字來說有足夠的內存),並且在JavaScript中沒有問題。

相關問題