我有一个正常的浮点数,例如“1234.567”或“100000”。我想将它转换为一个字符串,以便精确度是固定的,数字是科学记数法。例如,对于5位数,结果将分别为“1.2346e003和”1.0000e005“。内置的十进制数 - >>字符串函数将在它周围进行舍入,因此第二个数字将仅为”1e005“,即使我想要更多的数字。这是不可取的,因为我需要所有数字都是相同的长度。
有没有“pythonic”方法可以在不诉诸复杂字符串操作的情况下完成此操作?
答案 0 :(得分:1)
您可以使用%e字符串格式化程序:
>>> '%1.5e'%1234.567
'1.23457e+03'
>>> "%1.5e"%100000
'1.00000e+05'
%x.ye其中x =最小字符,y =最大精度。
答案 1 :(得分:1)
precision = 2
number_to_convert = 10000
print "%0.*e"%(precision,number_to_convert)
是你要求的吗?
答案 2 :(得分:1)
如果您需要像示例中那样保留3位指数,则可以定义自己的函数。以下是改编自this answer的示例:
def eformat(f, prec, exp_digits):
s = "%.*e"%(prec, f)
mantissa, exp = s.split('e')
return "%se%0*d"%(mantissa, exp_digits, int(exp))
>>> print eformat(1234.567, 4, 3)
1.2346e003