mirror of https://github.com/python/cpython
Misc/NEWS entries for issue 7117.
This commit is contained in:
parent
3934619da7
commit
b678de8ba6
37
Misc/NEWS
37
Misc/NEWS
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue