str(float) python 3 versus 2.7

Robin Becker robin at reportlab.com
Mon May 23 12:39:28 EDT 2016


I had always imagined that the str founction did some kind of rounding on floats 
to prevent small numerical errors from showing up. The 2.7 documentation starts 
like this

> class str(object='')
> Return a string containing a nicely printable representation of an object. For s



However, I see a difference in the behaviour of python3.3, 3.4 & 3.5 when 
compared to python 2.7.

> C:\Users\rptlab>\python33\python.exe -c"print(str(3*0.2))"
> 0.6000000000000001
>
> C:\Users\rptlab>\python34\python.exe -c"print(str(3*0.2))"
> 0.6000000000000001
>
> C:\Users\rptlab>\python35\python.exe -c"print(str(3*0.2))"
> 0.6000000000000001
>
> C:\Users\rptlab>\python27\python.exe -c"print(str(3*0.2))"
> 0.6

I suppose I am being naive and should use the round function when computing tick 
labels, but that leads to other issues.

Is there a sensible way to take a set of floats and find a suitable format to 
show significant figures for all, but leave off the noise?
-- 
Robin Becker




More information about the Python-list mailing list