【问题标题】:number to string conversion error in javascriptjavascript中的数字到字符串转换错误
【发布时间】:2014-10-24 12:34:03
【问题描述】:

你有没有尝试在 javascript 中将大数字转换为字符串?

请试试这个:

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

你能帮我理解为什么吗?

【问题讨论】:

标签: javascript numbers tostring


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-12-02
    • 2015-02-26
    • 2012-07-15
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多