Python实现数字四舍五入到最近千位并添加k/m/t单位后缀
Python 数字转带k/m/t单位后缀实现
- 先预设单位映射表,按数值量级从小到大对应后缀,同时匹配四舍五入的除数
- 对输入数值先做合法性校验,确保不超过支持的最大值999,999,999,999
- 从最高量级开始匹配,找到符合的量级后做四舍五入,拼接后缀即可
实现代码
def format_num(num: int) -> str: # 支持的最大数值 MAX_NUM = 999_999_999_999 if num > MAX_NUM: raise ValueError(f"输入数值不能超过{MAX_NUM}") # 单位映射:(阈值, 除数, 后缀) units = [ (1_000_000_000, 1_000_000_000, 't'), (1_000_000, 1_000_000, 'm'), (1_000, 1_000, 'k'), ] for threshold, div, suffix in units: if num >= threshold: # 四舍五入到整数 rounded = round(num / div) return f"{rounded}{suffix}" # 小于1000直接返回原数字字符串 return str(num)
测试验证
用示例给出的数值测试,输出完全匹配要求:
test_cases = [6, 23, 465, 3798, 43423, 910679, 8270192, 23890951, 430493245] for n in test_cases: print(f"{n:>10} --> {format_num(n)}")
输出结果:
6 --> 6 23 --> 23 465 --> 465 3798 --> 4k 43423 --> 43k 910679 --> 911k 8270192 --> 8m 23890951 --> 24m 430493245 --> 430m
内容的提问来源于stack exchange,提问作者jesse
相关产品推荐
相关产品推荐

