您是否尝试过在javascript中将大数字转换为字符串?
请试试这个:
var n = 10152557636804775;
console.log(n); // outputs 10152557636804776
你能帮我理解为什么吗?
答案 0 :(得分:3)
10152557636804775
高于JavaScript中可以安全表示的最大整数(它是Number.MAX_SAFE_INTEGER
)。有关详细信息,另请参阅this post。
来自MDN(重点是我的):
MAX_SAFE_INTEGER常量的值为9007199254740991.该数字背后的原因是 JavaScript使用IEEE 754中指定的双精度浮点格式数字,并且只能安全地表示之间的数字 - ( 2 ^ 53 - 1)和2 ^ 53 - 1。
要检查给定变量是否可以安全地表示为整数(没有表示错误),您可以使用IsSafeInteger()
:
var n = 10152557636804775;
console.assert(Number.isSafeInteger(n) == false);