Misc/NEWS entries for issue 7117.

This commit is contained in:
Mark Dickinson 2009-11-19 18:41:49 +00:00
parent 3934619da7
commit b678de8ba6
1 changed files with 33 additions and 4 deletions

View File

@ -15,11 +15,40 @@ Core and Builtins
- Issue #7085: Fix crash when importing some extensions in a thread - Issue #7085: Fix crash when importing some extensions in a thread
on MacOSX 10.6. on MacOSX 10.6.
- Issue #7117: repr(x) for a float x returns a result based on the
shortest decimal string that's guaranteed to round back to x under
correct rounding (with round-half-to-even rounding mode).
Previously it gave a string based on rounding x to 17 decimal digits.
repr(x) for a complex number behaves similarly. On platforms where
the correctly-rounded strtod and dtoa code is not supported (see below),
repr is unchanged.
- Issue #7117: On almost all platforms: float-to-string and
string-to-float conversions within Python are now correctly rounded.
Places these conversions occur include: str for floats and complex
numbers; the float and complex constructors; old-style and new-style
numeric formatting; serialization and deserialization of floats and
complex numbers using marshal, pickle and json; parsing of float and
imaginary literals in Python code; Decimal-to-float conversion.
The conversions use a Python-adapted version of David Gay's
well-known dtoa.c, providing correctly-rounded strtod and dtoa C
functions. This code is supported on Windows, and on Unix-like
platforms using gcc, icc or suncc as the C compiler. There may be a
small number of platforms on which correct operation of this code
cannot be guaranteed, so the code is not used: notably, this applies
to platforms where the C double format is not IEEE 754 binary64, and
to platforms on x86 hardware where the x87 FPU is set to 64-bit
precision and Python's configure script is unable to determine how
to change the FPU precision. On these platforms conversions use the
platform strtod and dtoa, as before.
- Issue #7117: Backport round implementation from Python 3.x. round - Issue #7117: Backport round implementation from Python 3.x. round
now uses David Gay's correctly-rounded string <-> double conversions now uses the correctly-rounded string <-> float conversions
(when available), and so produces correctly rounded results. There described above (when available), and so produces correctly rounded
are two related small changes: (1) round now accepts any class with results that will display nicely under the float repr. There are
an __index__ method for its second argument (but no longer accepts two related small changes: (1) round now accepts any class with an
__index__ method for its second argument (but no longer accepts
floats for the second argument), and (2) an excessively large second floats for the second argument), and (2) an excessively large second
integer argument (e.g., round(1.234, 10**100)) no longer raises an integer argument (e.g., round(1.234, 10**100)) no longer raises an
exception. exception.