perl -e 'printf "%s => %.1f\n", ("0.${_}5") x 2 for (0..9)' 0.05 => 0.1 0.15 => 0.1 <-- this pair precludes even/odd 0.25 => 0.2 <-- rounding as explanation 0.35 => 0.3 0.45 => 0.5 <-- looks like the threshold of down/up rounding behavior 0.55 => 0.6 0.65 => 0.7 0.75 => 0.8 0.85 => 0.8 <-- except not quite :( 0.95 => 0.9