Javascript解析int64

Opp*_*dal 17 javascript integer parseint

如何在没有javascript舍入的情况下将长整数(作为字符串)转换为Javascript中的数字格式?

var ThisInt = '9223372036854775808'
alert(ThisInt+'\r' +parseFloat(ThisInt).toString()+'\r' +parseInt(ThisInt).toString());
Run Code Online (Sandbox Code Playgroud)

我需要在将它作为一个字符串强制转换之前对其执行添加,并且如果可能的话,我不希望将它切成两半.

Aln*_*tak 28

Javascript中的所有数字都是64位"双精度" IEE754浮点数.

因此可以精确表示的最大正整数是2 ^ 53-1.剩余的比特是为指数保留的.

您的数字正好是此数字的1024倍,因此丢失3个十进制数字的精度.它根本无法更准确地表示.

在ES6中,可以使用Number.isSafeInteger( # )测试数字来查看它是否在安全范围内:

var ThisInt = '9223372036854775808'; 
console.log( Number.isSafeInteger( parseInt( ThisInt ) ) );
Run Code Online (Sandbox Code Playgroud)

还有一个BigInteger库可以提供帮助,但是,避免你必须自己做所有的字符串和位.

编辑2018/12现在有一个本地BigInt类(和新的文字语法)登陆Chrome和NodeJS.