You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现长数字每3位分组格式化?支持decimal库

Python使用decimal库实现数字按3位空格分组格式化

不需要手动编写复杂的分组逻辑,Python的decimal库本身就支持通过配置和格式化语法实现你需要的效果,以下是具体实现方式:

方法一:配置decimal上下文实现全局/临时分组规则

decimal库的上下文(Context)允许你设置数字的分组格式,包括分组间隔和分隔符:

from decimal import Decimal, getcontext, Context

# 方式1:修改全局上下文(会影响后续所有Decimal操作)
ctx = getcontext()
ctx.grouping = (3, 0)  # 指定从末尾开始每3位一组
ctx.sep = ' '  # 设置分组分隔符为空格

num1 = Decimal('10000000')
num2 = Decimal('40186356.92')
print(format(num1, 'n'))  # 输出:10 000 000
print(format(num2, 'n'))  # 输出:40 186 356.92

# 方式2:临时使用上下文(不影响全局设置)
temp_ctx = Context(grouping=(3, 0), sep=' ')
with temp_ctx:
    print(format(Decimal('40186356.92'), 'n'))  # 输出:40 186 356.92

方法二:快速替换默认分隔符

如果只是简单场景,也可以先使用默认的逗号千分位格式化,再替换成空格:

from decimal import Decimal

num = Decimal('40186356.92')
formatted_num = format(num, ',').replace(',', ' ')
print(formatted_num)  # 输出:40 186 356.92

这种方式更简洁,但相比上下文配置,灵活性稍弱,适合不需要频繁修改格式的场景。

两种方法都属于利用decimal库的内置能力,避免了手动拆分字符串、处理小数位的繁琐逻辑,同时能保证高精度小数的处理准确性。

内容的提问来源于stack exchange,提问作者Marco C. Stewart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:45:31