如何将号码4.082E-08打印为0.4082E-07?

时间:2015-10-18 07:48:34

标签: python

如何以小数点前只有零的方式打印任何浮点数?

例如:如何将4.082E-08打印为0.4082E-07?

num = 4.082E-08
# Do something.

print num # Here I need to print 0.4082E-07

1 个答案:

答案 0 :(得分:1)

首先,我可能错了,但我认为4.082E-08实际上是0.4082E-07 更正。

如果您想限制长度(打印的字符数),建议您查看format function

>>> print('{:010.3E}'.format(4.082E-08))
04.082E-08

如果你想打印一个特定的10次幂,你可以简单地除以这个幂并自己打印指数:

>>> print("{}E-07".format(num/1e-7))
0.4082E-07

def ppow(num,power):
    return "{}E{}".format(num/10**power,int(power))
print(ppow(num,-7))

>>> print(ppow(num),-7)
0.4082E-7

最后,如果你总是只想要一个零,你只需要动态计算十的幂。在这种情况下,它比科学记数法中的通常指数多一个(基数为10的记录的地板)。

import math
def str_leadingzero(num):
    power = math.floor(math.log10(num))+1
    ppow(num,power)

>>> str_leadingzero(num)
    0.4082E-7
>>> str_leadingzero(4.082E08)
    0.4082E9

当然这些spinets可能不是最佳解决方案,但我希望你能得到这个想法并实现自己的想法。