如何在不使用javascript舍入的情况下将长整数(作为字符串)转换为Javascript中的数字格式?
var ThisInt = '9223372036854775808'
alert(ThisInt+'\r' +parseFloat(ThisInt).toString()+'\r' +parseInt(ThisInt).toString());
我需要对其进行加法运算,然后再将其强制转换回字符串,并且如果可能的话,最好不要将其切成两半。
最佳答案
Javascript中的所有 Numbers都是64位“ double ”精度IEE754浮点。
因此可以精确表示的最大正整数是2 ^ 53-1。其余的位保留给指数。
您的数字正好是该数字的1024倍,因此会损失3个小数位数。根本无法更准确地表示它。
在ES6中,可以使用Number.isSafeInteger( # )
测试一个数字,以查看其是否在安全范围内:
var ThisInt = '9223372036854775808';
console.log( Number.isSafeInteger( parseInt( ThisInt ) ) );
还有一个BigInteger库,该库应该能够提供帮助,并避免您不得不花费所有精力来烦自己。
编辑2018/12 ,现在在Chrome和NodeJS中引入了本机
BigInt
类(以及新的文字语法)。