如何用下划线分隔小数千分位来打印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
相关产品推荐
相关产品推荐

