【问题标题】:parseFloat bug in IEIE 中的 parseFloat 错误
【发布时间】:2014-03-13 16:14:34
【问题描述】:

这似乎是一个非常简单的问题。 IE 中 parseFloat 的结果与 Chrome 和 FF 中的结果不同。 这是非常简单的代码

<html>
    <script>
        var lat = parseFloat(" 25.482688176812758");
        alert(lat);
    </script>
    <body>
    </body>
</html>

然后尝试在 IE 中打开它,警报是 25.482688176812757 但在 chrome 和 FF 中是 25.482688176812758

【问题讨论】:

  • 您是否尝试删除空白空间?
  • 哪个 IE?这在 IE10 和 IE11(带空格)上运行良好。
  • 它变得更加疯狂..查看:Number("25.482688176812758").toPrecision(20)..
  • 在我的 IE 10 中,parseFloat("25.482688176812758") 给我以..276 结尾
  • @Frederic 我试过删除空格并没有改变

标签: javascript internet-explorer parsefloat


【解决方案1】:

这是 Numbers 实现中浏览器对小数位数的限制。

一种解决方法是使用库BigDecimal

更多关于Floating-point cheat sheet for JavaScript

【讨论】:

  • 虽然我并不反对你——我只是好奇。如果所有浏览器都使用 IEEE 754 浮点,那么所有浏览器不应该都具有相同的行为吗?
  • 应该,但是IE没有和其他IE一样的行为。在 JavaScript 中处理这种精确的数据是很棘手的。即尝试将这个25.482688176812758.toFixed(15) + '\n' + 25.482688176812758.toFixed(16); 放入控制台Chrome/FF 和IE。更多,在两个浏览器中将 15 更改为 20..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2011-11-18
  • 1970-01-01
  • 2014-10-03
  • 2011-09-30
  • 2012-01-08
  • 2012-06-10
相关资源
最近更新 更多