On 10/30/2012 10:47 AM, andrew.macke...@3ds.com wrote: > 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 >
Looks to me that the indicated value was rounded wrong in 2.6, so apparently that was fixed in 2.7 The actual binary fp value stored for 2.096732150 e+02 is slightly smaller than the decimal string specified, so it'll round towards 1.0967321 when you specify 7 digits. I don't know of any way to re-introduce the earlier version. But you could fix them both by using Decimal, where there's no quantization error. Or if this is a fake example, adapt by just validating that the results are 'close' -- DaveA -- http://mail.python.org/mailman/listinfo/python-list