跨浏览器的JavaScript数字精度

12 浏览
0 Comments

跨浏览器的JavaScript数字精度

在JavaScript中,数字被定义为64位双精度浮点数。我有一个特定的分布式网络应用的用途,只有当我可以依赖于所有浏览器上的一致结果时,它才能正常工作。

尽管规范使用了IEEE标准,但我自然会怀疑在数学库甚至底层硬件的实现中可能存在微小的差异,这可能导致复合误差。

是否有任何兼容性数据来源或可靠的测试套件可以验证浏览器中的双精度计算?特别是,我还需要考虑移动浏览器(通常基于ARM)。

澄清:

这是一个关于浏览器兼容性的问题。我想了解是否可以依赖于所有浏览器以可靠、一致和可重复的方式处理IEEE浮点数。在大多数语言中,这是一个安全的假设,但有趣的是,在浏览器中对此存在一些不确定性。

关于如何避免由于精度不足和舍入误差而导致浮点问题,已经提供了一些建议。在大多数情况下,如果需要精确性,应该遵循这些建议!

对于这个问题,我不是在尝试避免问题,而是在理解问题。浮点数本质上是不准确的设计,但只要在构建时注意一些细节,这种不准确性就可以完全可预测和一致。IEEE-754对此进行了非常详细的描述,只有标准机构才能做到这一点。

我决定提供一小笔赏金,如果有人能引用以下内容:

  • 与主流浏览器中的IEEE数字实现相关的真实兼容性数据。
  • 一个旨在验证浏览器内部对64位浮点数(53位尾数)正确使用的测试套件。

在这个问题中,我不寻求替代选项、解决方法或避免问题的方法。感谢提供的建议。

0