是什么使长整数数值(16个以上的字符)在J​​avaScript中发生突变?

时间:2019-01-08 13:06:04

标签: javascript integer long-integer

有人可以解释原因是为什么在JavaScript中发生以下情况吗?

let x212 = 154688977320418212;
// returns 154688977320418200

let x230 = 154688977320418230;
// returns 154688977320418240

let x256 = 154688977320418256;
// returns 154688977320418240

let x257 = 154688977320418257;
// returns 154688977320418270

这是否意味着无法将长整数值存储而不将其转换为字符串?

1 个答案:

答案 0 :(得分:1)

在JavaScript中,所有数字均为64位浮点数

尾数的大小约为53位,这意味着您的数字154688977320418257不能准确表示为JavaScript数字。您看到的是一个近似值,因为它比MAX_SAFE_INTEGER(即9007199254740991)高一个数字。

如果您确实需要大量数字,可以使用https://github.com/peterolson/BigInteger.js之类的库。