与浮点运算一致的整数除法

发布于 2024-11-11 02:24:16 字数 425 浏览 2 评论 0原文

我需要在 JavaScript 中进行整数除法,这仅提供双精度浮点数可供使用。通常我只会执行 Math.floor(a / b) (或 a / b | 0) 并完成它,但在这种情况下我正在进行模拟同步执行,并且需要确保机器和运行时之间的一致性,无论它们使用 64 位还是 80 位内部精度。

到目前为止,我还没有发现任何不一致的地方,但我无法最终说服自己它们不会发生。所以我想知道:

  1. 假设ab分别是0..2^31-1和1..2^31-1范围内的整数,JavaScript Math.floor(a / b)(和 a / b | 0)的结果是否保证在不同机器和运行时保持一致?

  2. 为什么或为什么不?

I need to do integer division in JavaScript, which only gives me double-precision floating point numbers to work with. Normally I would just do Math.floor(a / b) (or a / b | 0) and be done with it, but in this case I'm doing simulation executed in lockstep and need to ensure consistency across machines and runtimes regardless of whether they use 64-bit or 80-bit internal precision.

I haven't noticed any inconsistencies so far, but I haven't been able to conclusively convince myself that they can't happen. So I'm left wondering:

  1. Assuming a and b are integers in range 0..2^31-1 and 1..2^31-1 respectively, are results from JavaScript Math.floor(a / b) (and a / b | 0) guaranteed to be consistent across machines and runtimes?

  2. Why or why not?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还如梦归 2024-11-18 02:24:16

我的猜测是不会。答案是它取决于许多因素:

  1. ECMA 脚本的浏览器供应商实现。

  2. 特定版本的 ECMA 脚本是否指定该一致性级别(通常不指定)。

  3. 您可能不知道的最终用户计算机上的其他外部因素。

众所周知,浮点运算很容易出现舍入错误。虽然很高兴认为小数点右侧的所有数字都是准确的,但让两台运行截然不同的硬件和软件配置的机器就计算达成一致可能就像放牧猫一样。

My guess would be no. And the answer would be that it's dependent upon a number of factors:

  1. Browser vendor implementations of ECMA Script.

  2. Whether or not a particular version of ECMA Script specifies that level of consistency (typically not).

  3. Other, external factors on the end-users' machines that you may not be aware of.

Floating point arithmetic is notoriously susceptible to rounding errors. While it's nice to think it's accurate with all those digits to the right-hand side of the decimal point, getting two machines running vastly different hardware and software configurations to agree on a calculation can be like herding cats.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文