Perl: Rounding a number
If you need to round a number in Perl you can use the POSIX method round()
. If for some reason you don't want to use the POSIX method I wrote a pure Perl version of round()
that is pretty fast.
use POSIX;
my $num = 3.14156;
print(POSIX::round($num)); # 3
print(round($num)); # 3
sub round {
my $num = shift();
my $ret;
if ($num < 0) {
$ret = int($num - 0.5);
} else {
$ret = int($num + 0.5);
}
return $ret;
}
Along with round, sometimes you want "round to the nearest X", which I also implemented:
sub nearest {
my ($nearest, $num) = @_;
my $div = $num / $nearest;
my $ret = round($div) * $nearest;
return $ret;
}
Note: Math::Round also includes both of these functions.