ページ

2014年3月8日土曜日

計算誤差

Googleスプレッドシートが最近バージョンアップしました。

色々と変更点は有る様ですが、trunc関数(少数切り捨て)に差がありました。



90*0.7 =63.00 なので、
trunc(90*0.7) =63 を期待したいのですが、

旧バージョンでは
trunc(90*0.7) =62 と出ます。

新バージョンでは
trunc(90*0.7) =63 になります。

どちらも
trunc(63) =63 です。

バイナリ計算特有の桁処理のミスだと思われますが、
引数で参照するセルが多いとどこでこの誤差が発生するのかわかりませんので、
誤差が出ていた物も出ていない物もあると思います。

モンハンのダメージ検証では1ダメージの誤差が大きいので、
これは色々な過去の検証の再チェックが必要になりそうです。

これは逆の可能性も考えられて怖いですね。

Googleスプレッドシートが正しい計算結果を返しても、MHの開発で使っている数学ライブラリにバグが有るために、実測と試算が一向に一致しない、なんて可能性を考えると気が遠くなります。

モノは違いますが、乱数を使っていても結果が周期的になっていたり、乱数シードが固定されていたりで、全然ランダムじゃない、なんて事例は有りますし。