【问题标题】:Why are these two numbers equivalent in javascript? [duplicate]为什么这两个数字在 javascript 中是等价的? [复制]
【发布时间】:2014-11-18 18:35:51
【问题描述】:

在浏览器的控制台中输入:

9999999999999999==10000000000000000

它说他们是平等的,为什么?

【问题讨论】:

  • 四舍五入。数字 9999999999999999 太大而无法准确表示(在 Javascript 中)。试试这个:alert(9999999999999999); 看看它会发出什么警报。
  • 另见Number.MAX_SAFE_INTEGER。它是9007199254740991,小于9999999999999999
  • 最后,如果您需要准确地表示更大的整数,有一些库可以做到这一点。
  • A Google search 为那个确切的字符串返回多个 SO 结果。

标签: javascript


【解决方案1】:

JavaScript 仅支持 53 位整数

JavaScript 中的所有数字都是浮点数,这意味着整数始终表示为

符号×尾数×2指数

尾数有 53 位。您可以使用指数来获得更高的整数,但它们将不再是连续的。例如,您通常需要将尾数乘以 2(指数 1)才能到达第 54 位。但是,如果乘以 2,则只能表示每隔一个整数:

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 2011-03-18
    • 2018-01-21
    • 2021-08-14
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多