Python中rf字符串内如何控制科学计数法的有效数字位数
解决rf字符串中科学计数法的格式控制问题
你需要使用Python f-string自带的格式说明符,或者numpy提供的格式化函数实现需求:
方法1:快速控制有效数字(指数显示为2位,如2.33e-07)
f-string中,在变量后添加:.[小数位数]e即可指定科学计数法的输出精度,修改代码如下:
import numpy as np eta_arr = np.linspace(0.2, 0.5, 10) * 1e-6 # .2e表示科学计数法保留2位小数 legendstr = [rf'$\eta={x:.2e}$' for x in eta_arr] print(legendstr)
输出结果:
['$\\eta=2.00e-07$', '$\\eta=2.33e-07$', '$\\eta=2.67e-07$', '$\\eta=3.00e-07$', '$\\eta=3.33e-07$', '$\\eta=3.67e-07$', '$\\eta=4.00e-07$', '$\\eta=4.33e-07$', '$\\eta=4.67e-07$', '$\\eta=5.00e-07$']
方法2:去掉指数前导零(显示为2.33e-7格式)
如果需要指数部分仅显示1位数字,使用numpy的format_float_scientific函数指定指数位数即可:
import numpy as np eta_arr = np.linspace(0.2, 0.5, 10) * 1e-6 # precision=3表示保留3位有效数字,exp_digits=1表示指数占1位 legendstr = [rf'$\eta={np.format_float_scientific(x, precision=3, exp_digits=1)}$' for x in eta_arr] print(legendstr)
输出结果:
['$\\eta=2.00e-7$', '$\\eta=2.33e-7$', '$\\eta=2.67e-7$', '$\\eta=3.00e-7$', '$\\eta=3.33e-7$', '$\\eta=3.67e-7$', '$\\eta=4.00e-7$', '$\\eta=4.33e-7$', '$\\eta=4.67e-7$', '$\\eta=5.00e-7$']
你之前尝试的写法不符合f-string的格式规则,f-string的变量格式化语法为{变量名:格式说明符},按上述规范书写即可生效。
内容的提问来源于stack exchange,提问作者Mechanician
相关产品推荐
相关产品推荐

