我有一个API用于生成带有Erlang服务器的随机地图tileset,安全整数JavaScript可以请求API良好,但问题是何时超过var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();
//Allow all requests from all domains & localhost
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods", "POST, GET");
next();
});
app.use(express.static(path.join(__dirname + '/public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var persons = [
"person1.jpg",
"person2.jpg",
"person3.jpg",
"person4.jpg",
"person5.jpg",
"person6.png"
];
app.get('/persons', function(req, res) {
console.log("GET From SERVER");
res.send(persons);
});
app.listen(6069);
。
然后,在服务器中我没有整数,因为JavaScript以科学记数法发送Number.MAX_SAFE_INTEGER
数字,而不是1e+21
,我需要字符串数字而不是科学记数法。
如何在JavaScript中获取类似999999999999999999999
的字符串,以便发送到API,而不是科学记数字符串?在JavaScript中存在一个任意长数字的库只有这个数字?棕色是一个X和Y的位置并且需要正确的位置,并且不是一个好的大型库因为需要良好的性能来渲染地图的ms,是用于浏览器中的游戏,而不是用于天文计算。
答案 0 :(得分:2)
您可以使用BigNumber库(https://github.com/MikeMcl/bignumber.js/)。
这两行应该可以解决问题:
BigNumber.config({EXPONENTIAL_AT: [-10, 30]});
var stringifiedLongNumber = new BigNumber('999999999999999999999').toString();
EXPONENTIAL_AT配置参数文档:http://mikemcl.github.io/bignumber.js/#exponential-at
答案 1 :(得分:1)
在这种情况下,问题的一个可能的解决方案是不向服务器发送新位置,并且只发送一个移动事件,然后Erlang中的服务器可以用任意长数来计算新位置(同时已经为非常大的内存计算了内存)数字),并没有JavaScript中的问题。
答案 2 :(得分: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);