Float to String "%.7e" - diff between Python-2.6 and Python-2.7

andrew.mackeith at 3ds.com andrew.mackeith at 3ds.com
Tue Oct 30 10:47:51 EDT 2012


When formatting a float using the exponential format, the rounding is different in Python-2.6 and Python-2.7. See example below.
Is this intentional?

Is there any way of forcing the Python-2.6 behavior (for compatibility reasons when testing)?

>c:\python26\python
r:\asiData\abaObjects\lib>c:\python26\python
Python 2.6.5 (r265:79096, Mar 19 2010, 18:02:59) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = [2.096732130e+02,2.096732140e+02,2.096732150e+02,2.096732151e+02,2.096732160+02]
>>> for a in x:
...     print ' %.9e    %.7e'%(a,a)
...
 2.096732130e+02    2.0967321e+02
 2.096732140e+02    2.0967321e+02
 2.096732150e+02    2.0967322e+02 <<<<<<<<
 2.096732151e+02    2.0967322e+02
 4.096732160e+00    4.0967322e+00
>>> for a in x:
...     print '%.9e   %.7e'%(-a,-a)
...
-2.096732130e+02   -2.0967321e+02
-2.096732140e+02   -2.0967321e+02
-2.096732150e+02   -2.0967322e+02 <<<<<<<<
-2.096732151e+02   -2.0967322e+02
-4.096732160e+00   -4.0967322e+00
>>> ^Z

>c:\python27\python
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = [2.096732130e+02,2.096732140e+02,2.096732150e+02,2.096732151e+02,2.096732160+02]
>>> for a in x:
...     print ' %.9e    %.7e'%(a,a)
...
 2.096732130e+02    2.0967321e+02
 2.096732140e+02    2.0967321e+02
 2.096732150e+02    2.0967321e+02 <<<<<<<<
 2.096732151e+02    2.0967322e+02
 4.096732160e+00    4.0967322e+00
>>> for a in x:
...     print '%.9e   %.7e'%(-a,-a)
...
-2.096732130e+02   -2.0967321e+02
-2.096732140e+02   -2.0967321e+02
-2.096732150e+02   -2.0967321e+02 <<<<<<<<
-2.096732151e+02   -2.0967322e+02
-4.096732160e+00   -4.0967322e+00
>>> ^Z

>
Andrew MacKeith



More information about the Python-list mailing list