More random python observations from a perl programmer

Christian Tismer tismer at appliedbiometrics.com
Thu Aug 19 17:12:20 CEST 1999


Tom Christiansen wrote:

[snipped a long list which I commented via private emails already]

> GOTCHA: (low)
>     Python has a round() function, but it seems to ignore the
>     IEEE rules of rounding.  However, its sprintf operator doesn't:
>         >>> print "int of %f is %.0f" % (1.5, 1.5)
>         int of 1.500000 is 2
>         >>> print round(1.5,0)
>         2.0
>         >>> print "int of %f is %.0f" % (2.5, 2.5)
>         int of 2.500000 is 2
>         >>> print round(2.5,0)
>         3.0

I had a look at this again. Despite the fact that the text in
the above example is a bit misleading by "int of" where
a round() takes place, which version of Python/architecture
did you use? I get the expected result, see below.

>>> print "round of %f is %.0f" % (1.5, 1.5) 
round of 1.500000 is 2
>>> print round(1.5,0)
2.0
>>> print "round of %f is %.0f" % (2.5, 2.5)
round of 2.500000 is 3
>>> print round(2.5,0)
3.0
>>> 

>     And I'd jolly well like to know why I wasn't allowed to use
>         print "int of %f is %.0f" % (2.5) * 2
>     or if needed,
>         print "int of %f is %.0f" % ( (2.5) * 2 )

This is just a matter of commas needed for singleton tuples,
and operator precedence, yielding

>>> print "round of %f is %.0f" % ((2.5,) * 2)
round of 2.500000 is 3
>>> 

ciao - chris

-- 
Christian Tismer             :^)   <mailto:tismer at appliedbiometrics.com>
Applied Biometrics GmbH      :     Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101   :    *Starship* http://starship.python.net
10553 Berlin                 :     PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint       E182 71C7 1A9D 66E9 9D15  D3CC D4D7 93E2 1FAE F6DF
     we're tired of banana software - shipped green, ripens at home




More information about the Python-list mailing list