Mark Dickinson wrote:
> Now that we've got the short float repr in Python, there's less value
> in having float.__str__ truncate to 12 significant digits (as it
> currently does). For Python 3.2, I propose making float.__str__ use
> the same algorithm as float.__repr__ for its output (and similarly for
> complex).
>
> Apart from simplifying the internals a little bit, one nice feature of
> this change is that it removes the differences in formatting between
> printing a float and printing a container of floats:
>
> >>> l = [1/3, 1/5, 1/7]
> >>> print(l)
> [0.3333333333333333, 0.2, 0.14285714285714285]
> >>> print(l[0], l[1], l[2])
> 0.333333333333 0.2 0.142857142857
>
> Any thoughts or comments on this?
>
> There's a working patch at http://bugs.python.org/issue9337
Python 2.5.4 (r254:67916, Jan 20 2010, 21:44:03)
>>> float("0.142857142857") * 7
0.99999999999899991
>>> float("0.14285714285714285") * 7
1.0
I've made a number of tools in the past that needed to round-trip a
float through a string and back. I was under the impression that floats
needed 17 decimal digits to avoid losing precision. How does one do that
efficiently if neither str nor repr return 17 digits?
Robert Brewer
[email protected]
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com