hnwの日記

近況報告

つい先ごろroundの話題を読み直してみました。自分で言うのもアレですが中々面白いですね。ただ、今になってみると無駄にムキになっている自分に気づきます。


どういうことかというと、自分でも最初は「PHPってイカれてるでしょ、わはは」ってつもりで書いていたくせに、「これはひどい」タグが大量に付いているのを見て「いやいや、あなた方には酷いかどうか判断できるほど浮動小数点数の知識があるんですか?これはわかってますか?じゃあこれは?」といった反応をしていた気がします。ムキになるのは良いのですが、他人に伝えることを忘れてしまうとタダの自己満足ですよね。


例えば「round関数その7:偶数丸め」の追記2の画像は典型的です(本文末尾に再掲しました)。僕が奇妙だと思う箇所は「4.093」となっている2箇所で、何がおかしいかの議論をしたかったのですが、奇妙な場所がどこなのかすら大半の人には伝わっていなかったのではないでしょうか。このC#の関数は第一引数の浮動小数点数を第二引数の桁で丸める関数なのですが、丸め方式は偶数丸めです。ですから、4.0925は4.092に、4.0935は4.094に丸められるのが正常のような気がするんですが、これってどう思います?という話題だったんですね。これについては実装が悪いとも仕様が悪いとも言えると思うので、正しいとも間違っているとも言えないかもしれませんが、面白い話題なのは間違いありません。その面白さを(おそらく)伝えられていない自分が残念だなあ、と感じています。


そんなこともあり、最近roundの話題をまとめなおす気力が湧いてきました。浮動小数点数があまり身近でない人にもわかるようなまとめができたらいいなあ、なんて思っています。


また、PHPの楽しいバグ紹介も再開したいと思っています。僕も以前ほどには「これはひどい」タグにムキにならないで書いていきたいのですが、多少手加減してタグを付けてもらえると精神衛生上助かります(笑)


では、今後ともよろしくお願いします。




追記: C#の(.NETの、というのが正確なのでしょうか)Math.Roundのリファレンスを貼っておきます。