Python如何输出带千分位、两位小数的本地化格式数字
Python本地化数字格式设置指定小数位数的解决方案
你遇到的问题源于Python格式迷你语言中n说明符的设计定位,以及精度参数的作用规则:
n说明符本身就会自动调用当前本地化设置输出千分位分隔符、小数点符号,所以禁止和,千分位标记共用,这就是你报ValueError: Cannot specify ',' with 'n'的原因- 对于浮点类型,
n说明符的精度参数控制的是有效数字位数,不是小数保留位数,默认值为6。所以你写.2n实际是要求输出2位有效数字,自然会得到1,2e+04的科学计数法结果,这是符合设计规则的,不属于功能遗漏。
正确实现方式
如果需要自定义小数保留位数的本地化格式,直接使用locale模块内置的格式化函数即可,不需要手动做字符替换:
import locale locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8') value = 12345.12356 # grouping=True表示启用千分位分隔符,%.2f指定保留两位小数 result = locale.format_string("%.2f", value, grouping=True) print(result)
上述代码输出为:
12 345,12
完全符合波兰语本地化的格式要求,同时保留两位小数。
内容的提问来源于stack exchange,提问作者Adam Piotrowski
相关产品推荐
相关产品推荐

