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

Reply via email to