JavaScript で整数除算を行う必要がありますが、これでは倍精度浮動小数点数しか得られません。通常はただ実行Math.floor(a / b)
(またはa / b | 0
) して終了しますが、この場合はロックステップで実行されるシミュレーションを実行しており、64 ビットまたは 80 ビットの内部精度を使用しているかどうかに関係なく、マシンとランタイム全体で一貫性を確保する必要があります。
これまで矛盾に気づいたことはありませんが、それらが起こり得ないことを決定的に納得させることはできませんでした. だから私は疑問に思っています:
とがそれぞれ 0..2^31-1 と 1..2^31-1 の範囲の整数であると仮定する
a
と、JavaScript からの結果(および) はマシンとランタイム間で一貫性があることが保証されますか?b
Math.floor(a / b)
a / b | 0
なぜですか、そうでないのですか?