我需要在 JavaScript 中进行整数除法,这只能让我使用双精度浮点数。通常我会做Math.floor(a / b)
(或a / b | 0
)并完成它,但在这种情况下,我正在做同步执行的模拟,并且需要确保机器和运行时之间的一致性,无论它们使用 64 位还是 80 位内部精度。
到目前为止,我还没有注意到任何不一致之处,但我无法最终说服自己它们不会发生。所以我想知道:
假设
a
和b
分别是 0..2^31-1 和 1..2^31-1 范围内的整数,JavaScriptMath.floor(a / b)
(和a / b | 0
)的结果是否保证在机器和运行时之间保持一致?为什么或者为什么不?