JavaScript将科学记数法中的不安全整数转换为字符串
JavaScript convert not safe integer in scientific notation to string
我有一个API生成一个随机地图块集与Erlang服务器,安全的整数JavaScript可以请求API好,但问题是什么时候是超过Number.MAX_SAFE_INTEGER
。
然后,在服务器中我没有整数,因为JavaScript以科学记数法发送1e+21
,而不是999999999999999999999
,我需要像字符串一样的数字,而不是科学记数法。
我怎么能得到一个字符串像"999999999999999999999"
在JavaScript发送到API,而不是科学符号字符串?存在一个库的任意长数字在JavaScript小只为数字?数字是X和Y的位置,需要正确的位置,而不是一个大的库,因为需要良好的性能,以毫秒渲染地图,是一个游戏在浏览器,而不是天文计算。
您可以使用bignnumber库(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
在这种情况下,一个可能的解决方案是不向服务器发送新的位置,而只发送一个移动事件,然后Erlang中的服务器可以计算任意长数字的新位置(同时有足够的内存来处理一个非常大的数字),而不会在JavaScript中出现问题。
也许使用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);
相关文章:
- CORS保持在SecurityError上:操作不安全
- createObjectURL blob url在Firefox中不安全
- 地理定位API从Chrome 50中的不安全来源中删除
- 为什么流星会被认为是不安全的
- SecurityError:操作在canvas.toDataURL中不安全
- Mootools:拒绝设置不安全的标头“;连接”;
- Chrome for bookmarlet 中的“不安全内容”
- 为什么内联 JS 块不安全
- jQuery:Javascript抛出错误“;操作不安全”;设置值时
- AngularJS-ngBindHtml和'不安全'html
- HTML5历史API-操作不安全
- 刚将我的网站移到ssl,但我有不安全的内容
- 角度相加“;“不安全”;在尝试下载文件时将其转换为url
- Chrome扩展:不安全的JavaScript尝试访问具有URL的框架域、协议和端口必须匹配
- Safari 7,Mac OS X:确定Java是否处于'不安全'模式
- 操作不安全-watermark.js
- 在我的站点中实现了CSP,但第三方库使用内联javascript.我可以选择性地允许'不安全的内联'
- 业务催化剂原型核心.ashx 拒绝设置不安全的标头“连接”冲突
- 不安全的 JavaScript 尝试访问框架,但 Chrome 中出现网址错误
- JavaScript将科学记数法中的不安全整数转换为字符串