【发布时间】:2011-05-31 18:35:39
【问题描述】:
我需要在 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)的结果保证跨机器和运行时保持一致?为什么或为什么不?
【问题讨论】:
标签: javascript floating-point integer-division