sub rnd{ my( $p, $n ) = @_; return sprintf "%.${p}f", $n + "0.5e-$p" };; print $_, ': ', rnd( 5, $_ ) for 0.000005, 0.000015, 0.000025, 0.000035, 0.000045, 0.000055, 0.000065, 0.000075, 0.000085, 0.000095;; 5e-006 : 0.00001 1.5e-005 : 0.00002 2.5e-005 : 0.00003 3.5e-005 : 0.00004 4.5e-005 : 0.00005 5.5e-005 : 0.00006 6.5e-005 : 0.00007 7.5e-005 : 0.00008 8.5e-005 : 0.00009 9.5e-005 : 0.00010