> 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