将数字转换为字符串科学记数法固定长度

时间:2014-05-29 19:32:25

标签: python string format

我有一个正常的浮点数,例如“1234.567”或“100000”。我想将它转换为一个字符串,以便精确度是固定的,数字是科学记数法。例如,对于5位数,结果将分别为“1.2346e003和”1.0000e005“。内置的十进制数 - >>字符串函数将在它周围进行舍入,因此第二个数字将仅为”1e005“,即使我想要更多的数字。这是不可取的,因为我需要所有数字都是相同的长度

有没有“pythonic”方法可以在不诉诸复杂字符串操作的情况下完成此操作?

3 个答案:

答案 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