in reply to
Best way to round a number.
Another possibility:
use strict;
use warnings;
my @nums = qw (0 1 4 5 6 11 14 15 16 20 24 25 26 30 34 35 36);
foreach (@nums)
{
print "in=$_\t rounded=", round_nearest5($_), "\n";
}
sub round_nearest5 # for an positive integer numeric value
{
my $in = shift;
my ($last_digit) = $in =~ /(\d)\s*$/;
if ($last_digit <5 and $in >= 10 )
{
$in =~ s/(\d)$/0/;
}
elsif ($last_digit >=5)
{
$in += (10-$last_digit);
}
return $in;
}
__END__
in=0 rounded=0
in=1 rounded=1
in=4 rounded=4
in=5 rounded=10
in=6 rounded=10
in=11 rounded=10
in=14 rounded=10
in=15 rounded=20
in=16 rounded=20
in=20 rounded=20
in=24 rounded=20
in=25 rounded=30
in=26 rounded=30
in=30 rounded=30
in=34 rounded=30
in=35 rounded=40
in=36 rounded=40