PEP 682: Discussions-To and minor fixes (#2317)

* fill in Discussions-To

* fix future references in Rationale

* Remove "code-block:: pycon", since it applies a proportional
font to '>>>' and '...', which looks odd and misaligns indents.

* grammar fix
This commit is contained in:
John Belmonte 2022-02-11 09:04:26 +09:00 committed by GitHub
parent c0fc47a05f
commit a89d703d63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 23 deletions

View File

@ -2,13 +2,13 @@ PEP: 682
Title: Format Specifier for Signed Zero
Author: John Belmonte <john@neggie.net>
Sponsor: Mark Dickinson <dickinsm@gmail.com>
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}'