{ my $number = $ARGV[0]; my $floor_log = int( log10($number) ); my $category = 10**$floor_log; my $as_decimal = $number / $category; my $integer_part = int($as_decimal); my $decimal_part = $as_decimal - $integer_part; my $rounded = $integer_part; if ( ($number >= 100) && ($decimal_part < 0.25) ) { $rounded += .25; } elsif ( $decimal_part < 0.5 ) { $rounded += .5; } elsif ( ($number >= 100) && ($decimal_part < 0.75) ) { $rounded += .75; } else { $rounded += 1; } $rounded *= $category; print "number = $number\n"; print "rounded = $rounded\n"; }