Title: Undocumented handling of thousands separator for floats and differences wrt Decimal · Issue #130664 · python/cpython · GitHub
Open Graph Title: Undocumented handling of thousands separator for floats and differences wrt Decimal · Issue #130664 · python/cpython
X Title: Undocumented handling of thousands separator for floats and differences wrt Decimal · Issue #130664 · python/cpython
Description: Bug report Bug description: In docs 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...
Open Graph Description: Bug report Bug description: In docs 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 oth...
X Description: Bug report Bug description: In docs we have: The ',' option signals the use of a comma for a thousands separator for floating-point presentation types and for integer presentation type '...
Opengraph URL: https://github.com/python/cpython/issues/130664
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Undocumented handling of thousands separator for floats and differences wrt Decimal","articleBody":"# Bug report\n\n### Bug description:\n\nIn [docs](https://docs.python.org/3.14/library/string.html#format-specification-mini-language) we have: \n\u003e 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.\n\n\u003e 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.\n\nBut this doesn't specify how separators are inserted for customized alignment, consider:\n```pycon\n\u003e\u003e\u003e format(0.0, '\u003e020_f')\n'0000000000000.000000'\n\u003e\u003e\u003e format(0.0, '\u003c020_f')\n'0.000000000000000000'\n\u003e\u003e\u003e format(0.0, '=020_f')\n'0_000_000_000.000000'\n\u003e\u003e\u003e format(0.0, '^020_f')\n'0000000.000000000000'\n```\nProbably it's obvious, that separators might be inserted only in case of 0-padding and `=` alignment, though maybe this should be mentioned explicitly.\n\nNote also that neither from above supported by Decimal/Fraction, e.g.:\n```pycon\n\u003e\u003e\u003e format(Decimal(0.0), '=020_f')\nTraceback (most recent call last):\n File \"\u003cpython-input-13\u003e\", line 1, in \u003cmodule\u003e\n format(Decimal(0.0), '=020_f')\n ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^\nValueError: invalid format string\n\u003e\u003e\u003e format(Fraction(0.0), '=020_f')\n' 0.000000'\n\u003e\u003e\u003e format(float(Fraction(0.0)), '=020_f')\n'0_000_000_000.000000'\n```\nBTW, the rationale for Fraction's behavior (see https://github.com/python/cpython/pull/100161) is \"no special-casing of the particular '0=' fill-character/alignment combination\", which is rather weak, IMO.\n\nEither this should be fixed (preferred) or documented.\n\n### CPython versions tested on:\n\nCPython main branch\n\n### Operating systems tested on:\n\n_No response_\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-131030\n* gh-131067\n* gh-132155\n* gh-136241\n* gh-136242\n* gh-136649\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/skirpichev","@type":"Person","name":"skirpichev"},"datePublished":"2025-02-28T07:23:23.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/130664/cpython/issues/130664"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:87eba87b-9c68-ec39-8f22-614dda3f6450 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | ED62:3B638A:DA07F1:1297807:6969F21C |
| html-safe-nonce | 3359c7e103cca991a7eb1bceb19a9ebc1a14b8746860abb176286ea742382d69 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFRDYyOjNCNjM4QTpEQTA3RjE6MTI5NzgwNzo2OTY5RjIxQyIsInZpc2l0b3JfaWQiOiI0MTAxODY3MzQ2MjU2ODUxNDg0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 8175f0bc26e02f2d72f85b546c1ba906f9fcd513e884b679547753dfa4a7d1c7 |
| hovercard-subject-tag | issue:2886411650 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/130664/issue_layout |
| twitter:image | https://opengraph.githubassets.com/49ed07d518db3df29574c52bb3d2ed03e5ce31a8d0b819f90453e56ca4e69673/python/cpython/issues/130664 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/49ed07d518db3df29574c52bb3d2ed03e5ce31a8d0b819f90453e56ca4e69673/python/cpython/issues/130664 |
| og:image:alt | Bug report Bug description: In docs 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 oth... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | skirpichev |
| hostname | github.com |
| expected-hostname | github.com |
| None | 7b32f1c7c4549428ee399213e8345494fc55b5637195d3fc5f493657579235e8 |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | bdde15ad1b403e23b08bbd89b53fbe6bdf688cad |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width