I'm trying to find a better way to round the last
digit of some fractional numbers.
All my numbers match this: /^0\.\d{5,}9{3}\d$/
The numbers will always be rounded "up" (like
in POSIX::ceil, but in a fractional context).
0.123499999996 rounds to 0.1235
0.12345678999994 rounds to 0.12345679
This is what I have so far: (adds 0.00000000000006 to 0.12345678999994 giving 0.12345679)
if ($frac =~ /999.$/) {
my ($zeroes, $digit) = $frac =~ /\.(.*)(.)$/;
$digit = '0.' .
'0' x (length($zeroes)-1) .
sprintf("%02d", 10 - $digit);
$frac += $digit;
}