まだまだ続く浮動小数

http://d.hatena.ne.jp/hnw/20070611

そんなわけで第1回記事を訂正しておくと、PHPは無知なクレーマーへの対策としてバグ修正をしたわけではありません。

hnw氏の中の人から突っ込んだ話を聞いたから…というわけではありませんが、最初のエントリを読んだ人は最後までつきあってほしい、と勝手に希望。感覚や常識で思考停止せず、完全に納得するまで(というか、一見すると納得してからも)追求する姿勢に脱帽です。やはり「粘着」することが重要なのか。自省せねば。

P.S.

ここで注目して欲しいのは、1/3がピッタリ表せない世界なのに、1/3を6倍した結果はピッタリになっていることです。なぜこんなことが起こるかというと、1/3がこの世界でピッタリ表せなかったのと同様、0.333を6倍した数がこの世界ではピッタリ表現できないからです。現象として見ると、1/3を 0.333にしたときに生まれた誤差が、6倍すると消えています。浮動小数点数で0.1を10倍した場合も同様ですね。このように、誤差は蓄積する可能性もありますが、打ち消し合うこともあります。

この説明は本当にわかりやすいと思う。