2016-09-24 156 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中没有问题。

相关问题