言語設計者の憂鬱

PHPのround()関数の奇妙な挙動について.*1

上記の通り、0.49999999999を四捨五入したら1になってしまいました。ここでクイズです。上記のような結果になった理由は何でしょうか。
(中略)
この一連のバグ報告を斜め読みで要約すると、「紙とペンで計算すると5.045になるはずの値(実際にはコンピュータ上では約5.04499999999999992894573)を小数点以下第二位までで四捨五入してるのになぜか5.04になった!バグだ!」って騒いでいるプログラマがバグ報告をしてきて、これに対処するために四捨五入の境界値付近(0.00000000001くらいの差)だったら全部0から遠い方に切り上げるようなコード修正をした、ということかと思います。
http://d.hatena.ne.jp/hnw/20070515

えーと、通常なら絶対にあり得ない設計なんだが、 PHPユーザはこういう設計センスの言語を信頼できるのか。

なんだかとても悲しい気持ちになった。
http://www.rubyist.net/~matz/20070528.html#p05

...さもありなん.

http://slashdot.jp/article.pl?sid=07/06/01/0059231

*1:事実は小説より奇なり.まさかこんな言語設計をする人間がいようとは.