python - 本地化的十进制数字格式

标签 python python-3.x format

我想以带有千位分隔符和两位小数的本地化格式打印数字。

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))

输出:12,345.12

import locale
from babel import numbers

value = 12345.12356

val = numbers.format_decimal(value, locale='pl_PL')
print (val)

输出:12 345,124

关于python - 本地化的十进制数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68959535/

相关文章:

python - 在 Luigi Visualiser 中保留已完成的管道

python - protobuf 的 HasField 函数需要哪些参数?

python - 如何随机替换列表中的字符串

python - bytes 没有 __bytes__ 方法

java - 当字符串长度变化时使用 String.format()

python - Python中内存高效的大量numpy数组

python - 如何使用Python(django)将文件存储在内存中?

oracle - OBIEE 12.2.1.2 - 数值的自定义数据格式

XAML:如何将百分比符号附加到绑定(bind)标签值?

Python 异步监听器循环不使用空闲主循环运行