On 2012-09-26 21:17, M.-A. Lemburg wrote:
Mark Dickinson wrote:
On Wed, Sep 26, 2012 at 8:36 PM, M.-A. Lemburg <mal@egenix.com> wrote:
It's actually quite common in finance and time calculations to round to the nearest say basis point, cent or say micro second in calculations
That's exactly where the problems creep in, though. Naive users expect rounding to give 'correct' results for decimal halfway cases, and then are surprised when it doesn't.
round(2.675, 2) 2.67
So you end up explaining again and again that computing binary approximations to decimal rounds of binary approximations of decimal halfway cases is a bad idea.
But that's the fault of round(), is it ? ;-) It's more one of educating people of what to expect when working with floats.
Your example is a typical case that comes up when people enter examples and wonder why they don't see the expected results.
In calculations, statistics, numeric, etc. such corner cases are not all that common, so things are not as bad as they may appear on first sight.
If we're going to move 'round' into 'math' because it sometimes gives results which puzzle naive users, shouldn't we do the same to 'float'? :-)