printf("%.5f\n", sprintf("%.6f1", $_))
####
printf( "%.5f\n", sprintf("%.12e",$_) )
# ^^^
####
% perl -le "print 0.00003499999999999999"
3.5e-05
####
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.