Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript将科学记数法中的不安全整数转换为字符串_Javascript - Fatal编程技术网

JavaScript将科学记数法中的不安全整数转换为字符串

JavaScript将科学记数法中的不安全整数转换为字符串,javascript,Javascript,我有一个API,用于使用Erlang服务器生成随机映射tileset,使用安全整数JavaScript可以请求API good,但问题是何时大于Number.MAX\u safe\u integer 然后,在服务器中我没有整数,因为JavaScript发送的是科学记数法中的1e+21数字,而不是999999999999999,我需要的是像字符串这样的数字,而不是科学记数法中的数字 如何在JavaScript中获取类似于“999999999999999999999”的字符串以发送给API,而不是科

我有一个API,用于使用Erlang服务器生成随机映射tileset,使用安全整数JavaScript可以请求API good,但问题是何时大于
Number.MAX\u safe\u integer

然后,在服务器中我没有整数,因为JavaScript发送的是科学记数法中的
1e+21
数字,而不是
999999999999999
,我需要的是像字符串这样的数字,而不是科学记数法中的数字


如何在JavaScript中获取类似于
“999999999999999999999”
的字符串以发送给API,而不是科学符号字符串?是否存在JavaScript中任意长数字的库?是否仅针对该数字?数字是位置的X和Y数字,需要正确的位置,这不是一个好的大库,因为在ms中渲染地图需要良好的性能,是用于浏览器中的游戏,而不是天文计算。

您可以使用BigNumber库()

这两行应该可以做到这一点:

BigNumber.config({EXPONENTIAL_AT: [-10, 30]});
var stringifiedLongNumber = new BigNumber('999999999999999999999').toString();

expndtw-1配置参数文档:

也许是一个更好的小解决方案,使用asm.js的优化,并使用字符串添加和rest到数字中,这是一个简单的示例,但可以做得更好:

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);

在这种情况下,问题的一个可能解决方案是不向服务器发送新位置,只发送一个移动事件,然后Erlang中的服务器可以用任意长的数字计算新位置(而对于非常大的数字没有足够的内存),而在JavaScript中没有问题。

检查此项:@vlaz我知道我不能直接转换,为此我ask@O_Z谢谢,我检查了一下,但是在精度上有错误,因为
999999999999999999
return
“1000000000000000000”
@JJJ并不总是谷歌的顶端是积极的开发,不是公理化的。我不生成随机数,我在客户端(JavaScript)中只有一个tileset,x:y,当玩家移动x++或y++或y-或y-时,随机数在服务器端,只需要将大量的位置x,y发送到服务器。@JJJ是和否,仅用于执行x++的2,7KB的库很大,如果存在更轻或没有库的替代方案更好,我不会使用所有的库,只需要一个字符串,每次add或rest都是1,一个科学库可能不会太快,因为只有x++还需要渲染地图。