如何为科学计数法存储的列表数值保留指定位数小数且不输出为0
解决方案
你之前使用的%f是定点数格式化符,会将数值转换为普通小数形式,对于量级极小的数值,自然会被格式化为0。要保留科学计数法的表达形式,需要使用科学计数法专用的格式化符e。
方案1:%格式化写法(兼容Python2/3)
要保留4位小数的科学计数法,直接指定精度为4即可:
list_1 = [1.3846881856127702e-05, 8.253583720918556e-07, 5.099125943708316e-08, 3.1775544417911306e-09, 1.9845003418339502e-10] # 默认四舍五入保留4位小数 list_1 = ['%.4e' % elem for elem in list_1]
输出结果示例:['1.3847e-05', '8.2536e-07', '5.0991e-08', '3.1776e-09', '1.9845e-10']
如果不需要四舍五入,要直接截断第4位之后的内容,可以使用以下写法:
list_1 = ['%.4e' % (float(int(elem * 10**(4 + int(f"{elem:e}".split('e')[1])))) / 10**(4 + int(f"{elem:e}".split('e')[1]))) for elem in list_1]
输出结果和你预期的一致:['1.3846e-05', '8.2535e-07', '5.0991e-08', '3.1775e-09', '1.9845e-10']
方案2:str.format 写法(更符合Python3编码规范)
# 四舍五入版本 list_1 = ["{:.4e}".format(elem) for elem in list_1]
如果需要保留浮点类型而不是字符串格式的结果,只需要在外层加float转换即可:
list_1 = [float("{:.4e}".format(elem)) for elem in list_1]
内容的提问来源于stack exchange,提问作者Charith
相关产品推荐
相关产品推荐

