diff --git a/pep-0682.rst b/pep-0682.rst index 8f01942b5..98d027262 100644 --- a/pep-0682.rst +++ b/pep-0682.rst @@ -2,13 +2,13 @@ PEP: 682 Title: Format Specifier for Signed Zero Author: John Belmonte Sponsor: Mark Dickinson -Discussions-To: +Discussions-To: https://discuss.python.org/t/pep-682-format-specifier-for-signed-zero/13596 Status: Draft Type: Standards Track Content-Type: text/x-rst Created: 29-Jan-2022 Python-Version: 3.11 -Post-History: +Post-History: 08-Feb-2022 Abstract @@ -27,9 +27,7 @@ zero to be normalized to positive zero. Motivation ========== -Here is negative zero: - -.. code-block:: pycon +Here is negative zero:: >>> x = -0. >>> x @@ -38,9 +36,7 @@ Here is negative zero: When formatting a number, negative zero can result from rounding. Assuming the user's intention is truly to discard precision, the distinction between negative and positive zero of the rounded result might be considered an -unwanted artifact: - -.. code-block:: pycon +unwanted artifact:: >>> for x in (.002, -.001, .060): ... print(f'{x: .1f}') @@ -49,18 +45,14 @@ unwanted artifact: 0.1 There are various approaches to clearing the sign of a negative zero. It -can be achieved without a conditional by adding positive zero: - -.. code-block:: pycon +can be achieved without a conditional by adding positive zero:: >>> x = -0. >>> x + 0. 0.0 To normalize negative zero when formatting, it is necessary to perform -a redundant (and error-prone) pre-rounding of the input: - -.. code-block:: pycon +a redundant (and error-prone) pre-rounding of the input:: >>> for x in (.002, -.001, .060): ... print(f'{round(x, 1) + 0.: .1f}') @@ -112,12 +104,12 @@ one-dimensional numerical arrays would be complicated by such pre-rounding: """Format a vector (any iterable) using given per-term format string.""" return f"[{','.join(f'{term:{format_spec}}' for term in v)}]" -To date, there doesn't appear to be other widely-used languages or libraries -providing such a formatting option for negative zero. However, the same -``z`` option syntax and semantics has been `proposed for C++ std::format()`_. -While the proposal was withdrawn for C++20, a consensus proposal is promised -for C++23. (The original `feature request`_ prompting this PEP was argued -without knowledge of the C++ proposal.) +To date, there doesn't appear to be any other widely-used language or library +providing a formatting option for negative zero. However, the same ``z`` +option syntax and semantics specified below have been `proposed for C++ +std::format()`_. While the proposal was withdrawn for C++20, a consensus +proposal is promised for C++23. (The original `feature request`_ prompting +this PEP was argued without knowledge of the C++ proposal.) .. _`proposed for C++ std::format()`: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1496r2.pdf .. _`feature request`: https://bugs.python.org/issue45995 @@ -138,9 +130,7 @@ where ``z`` is allowed for numerical types other than integer. Support for allowing the specifier to be used in f-strings, built-in ``format()``, and ``str.format()``. The %-formatting style will not support the new option. -Synopsis: - -.. code-block:: pycon +Synopsis:: >>> x = -.00001 >>> f'{x:z.1f}'