少なくとも十数人は居ると思われる読者の皆様、ごぶさたしておりました。サボリのため、まとめ記事は全く書けていません。
さて、今回は他所の記事の紹介です。PerlのMath::RoundというモジュールにPHPと似たようなマジックナンバーが採用されているようです。
ここら辺の話を読みながらPerlってround関数ないよなあと思っていたんだけど,CPANモジュールで実装しているものがあった.それがMath::Roundなんだけども,ソースコードを見るとphpと似たような定数が使われている.
てきとうなメモ -[Perl]Math::Round
これは標準で入るモジュールではありませんし、大してメジャーなものでもなさそうですけど、CPAN経由で気軽にインストール可能なものです。インストールしてソースコードを確認すると、確かに下記のような記述が見つかります。
$Math::Round::half = 0.50000000000008;
なかなかキモいですね。実際に動かしてみると、挙動も似たものであることがわかります。
$ perl -e 'use Math::Round; $x=0.49999999999999; printf("%.19f\n%.19f\n", $x, round($x));' 0.4999999999999900080 1.0000000000000000000続きを読む