我想用一个带有千位分隔符和两个十进制数字的本地化格式打印一个数字。
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开发人员是否没有预见到这种需求。后者将是一个令人不快的意外。
你可以试试:
import locale
locale.setlocale(locale.LC_ALL, '') # Use '' for auto, or force e.g. to 'en_US.UTF-8'
value = 12345.12356
print(locale.format_string("%.2f", value, grouping=True))
输出:12345 .12点
或
import locale
from babel import numbers
value = 12345.12356
val = numbers.format_decimal(value, locale='pl_PL')
print (val)
输出:12 345,124