JavaScript 中的数字到字符串转换错误
2014-10-24
1378
您是否曾尝试过在 javascript 中将大数字转换为字符串?
请尝试此操作:
var n = 10152557636804775;
console.log(n); // outputs 10152557636804776
您能帮助我理解原因吗?
1个回答
10152557636804775
高于 JavaScript 中可以
安全
表示的最大整数(即
Number.MAX_SAFE_INTEGER
)。另请参阅
这篇文章
了解更多详情。
摘自 MDN (重点是我的):
The MAX_SAFE_INTEGER constant has a value of 9007199254740991. The reasoning behind that number is that JavaScript uses double-precision floating-point format numbers as specified in IEEE 754 and can only safely represent numbers between -(2^53 - 1) and 2^53 - 1.
要检查给定变量是否可以安全地表示为整数(没有表示错误),您可以使用<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger" rel="nofollow <code>IsSafeInteger() :
var n = 10152557636804775;
console.assert(Number.isSafeInteger(n) == false);
Adriano Repetti
2014-10-24