【问题标题】:parseInt changes the integerparseInt 改变整数
【发布时间】:2014-10-09 04:54:05
【问题描述】:

我正在尝试从页面标题中提取一个从第 21 个字符开始的数字 (72157648141531978),如下所示:

parseInt(document.title.substring(21), 10);  

这会将字符串返回为整数 72157648141531980。我似乎无法弄清楚为什么它会改变最后两个数字。任何帮助将不胜感激。

【问题讨论】:

  • 完整的标题字符串是什么?
  • @Sebas - 哦,我现在明白了。
  • 2ality.com/2013/01/parseint.html,有趣的文章,all numbers are floating points in javascript 惊呆了!

标签: javascript integer substring parseint


【解决方案1】:

根据What is JavaScript's highest integer value that a Number can go to without losing precision?,一个整数的最大值是9007199254740992。

我在http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parseint 上尝试了你的计算,我可以确认你的问题。

解析超出此最大值似乎存在问题,并且正在四舍五入最后 2 个数字。

【讨论】:

    【解决方案2】:

    您已超出 JavaScript 使用的 double-precision floating-point format 的限制。您不能直接在 JavaScript 中使用该精确数字。您可以将其用作字符串,但如果您需要对其进行算术运算,则需要a bignum library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      相关资源
      最近更新 更多