On Apr 15, 8:06 pm, [EMAIL PROTECTED] wrote: > Does round() always perfectly return the output expected or are there > some artifacts which don't allow perfect functionality > > Using python 2.5: > > >>> round(12.234, 2) > 12.23 > >>> round(12.234, 3) > 12.234 > >>> round(12.234, 1) > 12.199999999999999 > > but was expecting 12.2 > > Also, for round(x,n), can't 'x' be an expression > > round(5.25/2, 2) > > was expecting 2.62 , but > > >>> round(5.25/2, 2) > > 2.6299999999999999
The problem is that floats are encoded as fractions where the denominator is an exponent of 2. 2.63 is not representable as such a fraction. 2.629999999999999999999999999999999999... is the closest fraction. Rounding this number will only give you the same thing. If you want decimals to act as expected, use the Decimal class in module decimal. It works as expected, but is much slower. -- http://mail.python.org/mailman/listinfo/python-list