如何在不使用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类(以及新的文字语法)。

07-24 09:31