javascript中的数字到字符串转换错误

时间:2014-10-24 12:34:04

标签: javascript numbers tostring

您是否尝试过在javascript中将大数字转换为字符串?

请试试这个:

var n = 10152557636804775;
console.log(n); // outputs 10152557636804776

你能帮我理解为什么吗?

1 个答案:

答案 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);