Python格式化打印中如何控制科学计数法的指数位数?
解决Python科学计数法指数仅保留一位的问题
在Python 3.10中,标准的格式化字符串(f-string 或 str.format)没有直接控制指数位数的参数,默认会输出两位指数(比如1e-04)。要实现指数仅保留一位的效果,有两种可行方案:
方案1:封装numpy的格式化方法
虽然np.format_float_scientific代码较长,但可以封装成一个简单函数,调用时就很简洁:
import numpy as np def fmt_short_sci(num): return np.format_float_scientific( num, precision=0, exp_digits=1, unique=True, trim='-' ) xx = 1.e-4 print(fmt_short_sci(xx)) # 输出:1e-4
方案2:纯Python字符串处理(不依赖numpy)
先按标准科学计数法格式化,再手动修改指数部分,去掉多余的前导0:
xx = 1.e-4 # 先得到标准科学计数法字符串 raw_fmt = f"{xx:.0e}" # 拆分底数和指数部分 if 'e' in raw_fmt: base, exp_part = raw_fmt.split('e') # 处理两位指数的情况(比如-04、+03) if len(exp_part) == 3: sign = exp_part[0] # 取指数的最后一位数字,去掉前导0 exp_digit = exp_part[-1] raw_fmt = f"{base}e{sign}{exp_digit}" print(raw_fmt) # 输出:1e-4
内容的提问来源于stack exchange,提问作者Marti
相关产品推荐
相关产品推荐

