Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Undocumented handling of thousands separator for floats and differences wrt Decimal #130664

Open
Labels
docsDocumentation in the Doc dirextension-modulesC modules in the Modules dirstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error
@skirpichev

Description

@skirpichev

Bug report

Bug description:

Indocs we have:

The ',' option signals the use of a comma for a thousands separator for floating-point presentation types and for integer presentation type 'd'. For other presentation types, this option is an error. For a locale aware separator, use the 'n' integer presentation type instead.

The '_' option signals the use of an underscore for a thousands separator for floating-point presentation types and for integer presentation type 'd'. For integer presentation types 'b', 'o', 'x', and 'X', underscores will be inserted every 4 digits. For other presentation types, specifying this option is an error.

But this doesn't specify how separators are inserted for customized alignment, consider:

>>>format(0.0,'>020_f')'0000000000000.000000'>>>format(0.0,'<020_f')'0.000000000000000000'>>>format(0.0,'=020_f')'0_000_000_000.000000'>>>format(0.0,'^020_f')'0000000.000000000000'

Probably it's obvious, that separators might be inserted only in case of 0-padding and= alignment, though maybe this should be mentioned explicitly.

Note also that neither from above supported by Decimal/Fraction, e.g.:

>>>format(Decimal(0.0),'=020_f')Traceback (most recent call last):  File "<python-input-13>", line 1, in <module>    format(Decimal(0.0), '=020_f')    ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ValueError: invalid format string>>>format(Fraction(0.0),'=020_f')'            0.000000'>>>format(float(Fraction(0.0)),'=020_f')'0_000_000_000.000000'

BTW, the rationale for Fraction's behavior (see#100161) is "no special-casing of the particular '0=' fill-character/alignment combination", which is rather weak, IMO.

Either this should be fixed (preferred) or documented.

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsDocumentation in the Doc dirextension-modulesC modules in the Modules dirstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp