On Tue, Feb 15, 2011 at 4:09 PM, Chris Rebert <c...@rebertia.com> wrote: > On Tue, Feb 15, 2011 at 3:49 PM, Hans-Peter Jansen <h...@urpla.net> wrote: >> Hi, >> >> while I usually cope with the woes of floating point issues, this is >> one, that I didn't expect: >> >>>>> round(2.385, 2) >> 2.3799999999999999 >> >> Doesn't the docs say, it's rounded up for this case? >> >> <quote> >> Values are rounded to the closest multiple of 10 to the power minus n; >> if two multiples are equally close, rounding is done away from 0 >> </quote> >> >> Well, that one is clearly rounding down. >> >> What's up, eh, down here? > > http://docs.python.org/library/functions.html#round : > """ > Note: The behavior of round() for floats can be surprising: for > example, round(2.675, 2) gives 2.67 instead of the expected 2.68. This > is not a bug: it’s a result of the fact that most decimal fractions > can’t be represented exactly as a float. See "Floating Point > Arithmetic: Issues and Limitations"[1] for more information. > """ > [1]: http://docs.python.org/tutorial/floatingpoint.html > > And indeed: >>>> from decimal import Decimal >>>> Decimal(2.385) > Decimal('2.3849999999999997868371792719699442386627197265625') > > Which, rounded to 2 decimal places, gives us 2.38, which is in turn > approximated as:
[*whacks forehead hard*] Nevermind. - Chris -- http://mail.python.org/mailman/listinfo/python-list