hnwの日記

round関数その9:PerlのMath::Roundモジュールについて

少なくとも十数人は居ると思われる読者の皆様、ごぶさたしておりました。サボリのため、まとめ記事は全く書けていません。


さて、今回は他所の記事の紹介です。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
続きを読む