This question already has answers here:
What is JavaScript's highest integer value that a number can go to without losing precision?
(21个回答)
去年关闭。
有谁能解释为什么在JavaScript中发生以下情况的原因?
这是否意味着无法将长整数值存储而不将其转换为字符串?
(21个回答)
去年关闭。
有谁能解释为什么在JavaScript中发生以下情况的原因?
let x212 = 154688977320418212;
// returns 154688977320418200
let x230 = 154688977320418230;
// returns 154688977320418240
let x256 = 154688977320418256;
// returns 154688977320418240
let x257 = 154688977320418257;
// returns 154688977320418270
这是否意味着无法将长整数值存储而不将其转换为字符串?
最佳答案
在JavaScript中,所有数字均为64位浮点数。
尾数的大小约为53位,这意味着您的数字154688977320418257
不能准确地表示为JavaScript数字。您所看到的是一个近似值,因为它是一个比MAX_SAFE_INTEGER
高的数字(即9007199254740991)。
如果确实需要大数,则可以使用诸如https://github.com/peterolson/BigInteger.js之类的库。
关于javascript - 是什么使长整数数值(16个以上的字符)在JavaScript中发生突变? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54092481/