my %c; for my $i ( '00' .. '99' ) { my $f= 0 + ".${i}5"; my $r= sprintf "%.2f", $f; my $d= $r < $f ? '-' : '+'; $c{$d}++; print "$f $r $d\n"; } print "$c{'-'} rounded down, $c{'+'} rounded up.\n"; __END__ 0.005 0.01 + 0.015 0.01 - 0.025 0.03 + 0.035 0.04 + 0.045 0.04 - 0.055 0.06 + ... 0.905 0.91 + 0.915 0.92 + 0.925 0.93 + 0.935 0.94 + 0.945 0.94 - 0.955 0.95 - 0.965 0.96 - 0.975 0.97 - 0.985 0.98 - 0.995 0.99 - 50 rounded down, 50 rounded up.