Math::Round
ここら辺の話を読みながらPerlってround関数ないよなあと思っていたんだけど,CPANモジュールで実装しているものがあった.それがMath::Roundなんだけども,ソースコードを見るとphpと似たような定数が使われている.
$Math::Round::half = 0.50000000000008; sub round { my $x; my @res = map { if ($_ >= 0) { POSIX::floor($_ + $Math::Round::half); } else { POSIX::ceil($_ - $Math::Round::half); } } @_; return (wantarray) ? @res : $res[0]; }
これが良い実装なのかは良く知らないのだが,なぜこの値になったのかがよくわからないので,ソースを読んでいるとちょっと気持ち悪いなと思ってしまう.