[Python-Dev] Two proposed changes to float formatting

Scott David Daniels Scott.Daniels at Acm.Org
Sun Apr 26 21:11:36 CEST 2009


Mark Dickinson wrote:
> ... """[5]	These numbers are fairly arbitrary. They are intended to
> avoid printing endless strings of meaningless digits without
> hampering correct use and without having to know the exact
> precision of floating point values on a particular machine."""
> I don't find this particularly convincing, though---I just don't see
> a really good reason not to give the user exactly what she/he
> asks for here.
As a user of Idle, I would not like to see the change you seek of
having %f stay full-precision. When a number gets too long to print
on a single line, the wrap depends on the current window width, and
is calculated dynamically. One section of the display with a 8000
-digit (100-line) text makes Idle slow to scroll around in. It is
too easy for numbers to go massively positive in a bug.
> - the change isn't gentle: as you go over the 1e50 boundary,
> the number of significant digits produced suddenly changes
> from 56 to 6; it would make more sense to me if it
> stayed fixed at 56 sig digits for numbers larger than 1e50.
 > - now that we're using David Gay's 'perfect rounding'
 > code, we can be sure that the digits aren't entirely
 > meaningless, or at least that they're the 'right' meaningless
 > digits. This wasn't true before.
However, this is, I agree, a problem. Since all of these numbers
should end in a massive number of zeroes, how about we replace
only the trailing zeroes with the e, so we wind up with:
 1157920892373161954235709850086879078532699846656405640e+23
 or 115792089237316195423570985008687907853269984665640564.0e+24
or some such, rather than
 1.157920892373162e+77
 or 1.15792089237316195423570985008687907853269984665640564e+77
--Scott David Daniels
Scott.Daniels at Acm.Org


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /