【发布时间】:2021-10-27 18:07:16
【问题描述】:
我想以带有千位分隔符和两位小数的本地化格式打印一个数字。
import locale
locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8')
value = 12345.12356
print(f'{value:,.2f}')
print(f'{value:n}')
输出:
12,345.12
12 345,1
第二个字符串几乎是我想要的,但我找不到定义精度的方法。无法使用
print(f'{value:,.2n}')
Traceback (most recent call last):
File "x.py", line 8, in <module>
print(f'{value:,.2n}')
ValueError: Cannot specify ',' with 'n'.
虽然这会产生意想不到的结果:
print(f'{value:.2n}')
1,2e+04
如何设置精度为两位数?
注意,我知道我可以替换 12,345.12 中的字符或使用 decimal 模块等。我只是想知道我是否无法正确解释文档,或者 Python 开发人员是否没有预见到这一点需要。后者将是一个令人不快的惊喜。
【问题讨论】:
-
嗯,我原以为
.2n会是正确的格式说明符。这实际上可能是一个 Python 错误。看起来print(f'{value:.7n}')给出了“正确”的结果,这让我认为确定精度的任何代码都不是区域设置感知的。 -
locale.format_string("%.2f", 12345.12356, grouping=True)似乎给出了预期的结果。 -
这似乎是未解决的问题bpo33731
-
感谢您的更新。我不知道@wim
标签: python python-3.x format