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

如何在Python 3.X中将数字缩写为1k、1m等格式?

实现数字的千/百万量级缩写格式

你需要的是将大数字转换为带k(千)、m(百万)等量级缩写的格式,而"{:,}"是Python格式化字符串中仅用于添加千分位逗号的专用语法,无法直接替换成其他字符,所以会报错。以下是两种实用的实现方式:

基础实现(保留一位小数)

这个函数会根据数字大小自动匹配对应的量级缩写,小于1000的数字直接返回原数:

def format_number(num):
    # 定义量级与对应缩写:十亿(b)、百万(m)、千(k)
    magnitudes = [(1_000_000_000, 'b'), (1_000_000, 'm'), (1_000, 'k')]
    for magnitude, suffix in magnitudes:
        if abs(num) >= magnitude:
            return f"{num / magnitude:.1f}{suffix}"
    return str(num)

# 测试
print(format_number(1000))    # 输出 1.0k
print(format_number(2500000)) # 输出 2.5m
print(format_number(750))     # 输出 750

优化实现(自动去除末尾.0)

如果希望整数量级的数字显示为1k而非1.0k,可以调整逻辑:

def format_number(num):
    magnitudes = [(1_000_000_000, 'b'), (1_000_000, 'm'), (1_000, 'k')]
    for magnitude, suffix in magnitudes:
        if abs(num) >= magnitude:
            value = num / magnitude
            # 整数结果去掉小数部分,非整数保留一位小数
            return f"{int(value)}{suffix}" if value.is_integer() else f"{value:.1f}{suffix}"
    return str(num)

# 测试
print(format_number(1000))    # 输出 1k
print(format_number(1500))    # 输出 1.5k
print(format_number(1000000)) # 输出 1m

内容的提问来源于stack exchange,提问作者vlone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:15:49