有人可以解释原因是为什么在JavaScript中发生以下情况吗?
let x212 = 154688977320418212;
// returns 154688977320418200
let x230 = 154688977320418230;
// returns 154688977320418240
let x256 = 154688977320418256;
// returns 154688977320418240
let x257 = 154688977320418257;
// returns 154688977320418270
这是否意味着无法将长整数值存储而不将其转换为字符串?
答案 0 :(得分:1)
在JavaScript中,所有数字均为64位浮点数。
尾数的大小约为53位,这意味着您的数字154688977320418257
不能准确表示为JavaScript数字。您看到的是一个近似值,因为它比MAX_SAFE_INTEGER
(即9007199254740991)高一个数字。
如果您确实需要大量数字,可以使用https://github.com/peterolson/BigInteger.js之类的库。