带有强制前导零的python科学符号

问题描述 投票:3回答:3

我想让Python2.7以科学计数法打印出浮点数,强制以0开头。例如,假设

a=1234567890e12
print '{:22.16E}'.format(a)
1.2345678900000000E+21

但是,我希望打印输出看起来像:

0.1234567890000000E+22

注意,由于所需的输出被强制为前导零,因此指数增加了1。我该如何实现?谢谢。

python-2.7 scientific-notation formatted-input
3个回答
-1
投票

嗯,由于您要执行的操作不是“标准”科学记数法,因此我不确定是否有简单的调用来执行此操作。这是一个hack,但是可以使用

a = 1234567890e12
A = str(a)
exp = A.find('e+')
converted = '0.' + A[0] + A[2:exp] + 'e+' + str(int(A[exp+2:])+1)

4
投票

fortranformat软件包将满足您的需求。

import fortranformat as ff

a=1234567890e12
lineformat = ff.FortranRecordWriter('(1E26.16)')
lineformat.write([a])

输出:

'    0.1234567890000000E+22'

0
投票

也处理E-。

def fortranFormat(n):
    a = '{:.4E}'.format(float(n))
    e = a.find('E')
    return '0.{}{}{}{:02d}'.format(a[0],a[2:e],a[e:e+2],abs(int(a[e+1:])*1+1))

print(fortranFormat('60.505'))
print(fortranFormat('74.705'))
print(fortranFormat('2.000000E-09'))

输出:

0.60505E+02
0.74705E+02
0.20000E-08
© www.soinside.com 2019 - 2024. All rights reserved.