Where is the correct round() method? Use math.ceil

Maric Michaud maric at aristote.info
Mon Jul 28 20:30:34 CEST 2008


Le Monday 28 July 2008 02:35:08 Herman, vous avez écrit :
> Where is the correct round() method?
> Hello,
>
>  I need a round function that _always_ rounds to the higher integer if
>  the argument is equidistant between two integers. In Python 3.0, this
>  is not the advertised behavior of the built-in function round() as
>
>  seen below:
>  >>> round(0.5)
>
>  0
>
>  >>> round(1.5)
>
>  2
>
>  >>> round(2.5)
>
>  2

Hmm, I don't have the same result in python2.6, I suspect it's a floating 
point precision problem, try just to type "0.5" in the console to see the 
exact representation of this value on your system, it may be just over or 
just down by a small quantity.

On mine with 2.6 this typically give :

>>>[26]: 0.5
...[26]: 0.5

>>>[27]: 0.49
...[27]: 0.48999999999999999

>>>[29]: 0.51
...[29]: 0.51000000000000001

>>>[28]: 1.1
...[28]: 1.1000000000000001

>>>[35]: round(0.5)
...[35]: 1.0


-- 
_____________

Maric Michaud



More information about the Python-list mailing list