> I understood that round() is using the so called Bankers' round algorithm.
> But I notice it's inconsistent. The banker's algorithm is magically
> activated only for numbers beyond 2047.0. Before 2047, the "classic"
> 5-is-rounded-up method is used.
>

Floating point numbers are........ imprecise.

What you see as 2047.005, the computer might see as
2047.0049999999999999123869128  or perhaps as 2047.005000000000000012396291

When I only care about a certain accuracy (such as with monetary amounts) I
'solve' this quirk of the CPU by adding a miniscule fudge factor:

round($someval + 0.000000001, 2)

PHP doesn't do this automatically because sometimes a plus-fudge is
appropriate, sometimes a negative-fudge is better.

-Sara

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to