It's not an anomaly.
Perl rounds scientifically. This is not the same way of rounding as accountants use. Accountants always round .5 up. That's probably what you were taught at school. It's predictable and good.
Scientists don't always round .5 up. .5 is exactly half way between two numbers. If they always rounded up, you would get statistical bias in large collections of rounded data. .5 is rounded sometimes up and sometimes down. (I think the rule is something like even numbers (2.5, 4.5, 6.5 etc.) round down while odd numbers (1.5, 3.5 etc.) round up.) This method is scientifically correct, and good.
Of course, there are also problems with INTs and FLOATs. For accounting correctness, one thing you can do is cheat:
dave hj~# untested if ($unrounded =~ /\.(\d)/ and $1 > 4) {$rounded = int ($unrounded + 1 +)} else {$rounded = int $unrounded}
In reply to Re: Rounding With sprintf anomaly?
by dash2
in thread Rounding With sprintf anomaly?
by oakbox
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |