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

如何用下划线分隔小数千分位来打印float类型数值?

Python 为 Float 小数部分添加千分位下划线分隔

Python 内置的 f-string 格式符 _ 仅支持整数部分的千分位分隔,没法直接给小数部分加下划线。要实现你要的效果,得手动拆分数值的整数和小数部分分别处理后再拼接。

方法1:拆分拼接法

把数值转成字符串后拆分整数、小数部分,对小数部分按每3位分组加下划线,最后组合结果:

num = 7.012345678
# 拆分整数与小数部分
int_part, dec_part = f"{num}".split('.')
# 对小数部分按每3位分割并拼接下划线
formatted_dec = '_'.join([dec_part[i:i+3] for i in range(0, len(dec_part), 3)])
# 组合最终结果
final_result = f"{int_part}.{formatted_dec}"
print(final_result)
# 输出:7.012_345_678

方法2:正则表达式替换法

用正则匹配小数部分末尾每3位的前置位置,插入下划线:

import re

num = 7.012345678
num_str = f"{num}"
int_part, dec_part = num_str.split('.')
# 正则替换:在小数部分中,匹配到后续还有3的倍数位数字的位置,插入下划线
formatted_dec = re.sub(r'(?<=\d)(?=(\d{3})+$)', '_', dec_part)
final_result = f"{int_part}.{formatted_dec}"
print(final_result)
# 输出:7.012_345_678

处理固定小数位数的场景

如果需要先保留指定小数位数再添加分隔符,可以先格式化到目标位数再处理:

num = 7.012345678912
# 先保留9位小数
formatted_num_str = f"{num:.9f}"
int_part, dec_part = formatted_num_str.split('.')
formatted_dec = '_'.join([dec_part[i:i+3] for i in range(0, len(dec_part), 3)])
final_result = f"{int_part}.{formatted_dec}"
print(final_result)
# 输出:7.012_345_679

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:30:54