切り上げ
POSIXにceilが用意されています。
自分で作る場合は、+1してからintを使います。
小数点以下を切り上げる場合にはそのままintを使い、小数点以下n桁を残して切り上げる場合には10のn乗をかけてからintを使い10のn乗で割ります。
対象が負数の場合にはいきなりintを使います。
use POSIX qw(ceil); $foo = ceil(10.5); # 11 $bar = ceil(-10.5); # -10
$hoge = ceil(198.25, 0); # $hoge = 199
$fuga = ceil(198.25, 1); # $fuga = 198.3
$piyo = ceil(198.25, -1); # $piyo = 200
$minus = ceil(-198.25, 1); # $minus = -198.2
print "$hoge $fuga $piyo $minus\n";
sub ceil {
my $val = shift; # 切り上げる数
my $col = shift; # 小数点以下のどこまで残すか
my $r = 10 ** $col;
if ($val > 0) {
my $tmp = $val * $r;
if ($tmp == int($tmp)) {
return $tmp / $r;
} else {
return int($tmp + 1) / $r;
}
} else {
return int($val * $r) / $r;
}
}
関連項目
・int関数・切り捨て
・四捨五入
