in reply to Re: Rounding of a number...
in thread Rounding of a number...

As a last resort, you could always:

weekly = sprintf("%.3", $yearlyamount/52); chop($weekly); printf "%5.2", $weekly;
Except that it will produce wrong values every now and then. It will produce a wrong value whenever $yearlyamount/52 is less than 0.0005 less than a whole number - but still less than said whole number. This causes the "%.3f" rounding to produce a ".000" number, of which the last 0 will be chopped. The final result will be a ".00" number. But it should have been a ".99" number.
use POSIX "floor"; my $yearlyamount = 5199.98; my $weekly1 = sprintf("%.3f", $yearlyamount/52); chop($weekly1); my $weekly2 = floor(100*5199.98/52)/100; printf("%5.2f %5.2f\n", $weekly1, $weekly2); __END__ 100.00 99.99