Python 2.7 带强制前导零的python科学记数法

Python 2.7 带强制前导零的python科学记数法,python-2.7,scientific-notation,formatted-input,Python 2.7,Scientific Notation,Formatted Input,我想让Python2.7打印出科学记数法中的浮点数,强制从0开始。例如,假设 a=1234567890e12 print '{:22.16E}'.format(a) 1.2345678900000000E+21 但是,我希望打印输出如下所示: 0.1234567890000000E+22 请注意,由于所需的输出被强制为前导零,因此指数增加了1。我怎样才能做到这一点? 谢谢。好吧,既然你想做的不是“标准”的科学记数法,我不确定是否有一个简单的方法可以做到这一点。然而,这里有一个黑客程序,它将起

我想让Python2.7打印出科学记数法中的浮点数,强制从0开始。例如,假设

a=1234567890e12
print '{:22.16E}'.format(a)
1.2345678900000000E+21
但是,我希望打印输出如下所示:

0.1234567890000000E+22
请注意,由于所需的输出被强制为前导零,因此指数增加了1。我怎样才能做到这一点?
谢谢。

好吧,既然你想做的不是“标准”的科学记数法,我不确定是否有一个简单的方法可以做到这一点。然而,这里有一个黑客程序,它将起作用

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

fortranformat软件包将满足您的需要

import fortranformat as ff

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

'    0.1234567890000000E+22'
处理电子商务以及

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

好奇,你为什么要这么做?这不是科学记数法的标准,我需要让两个不同的文件逐位兼容。其中一个是由Fotran 90编写的,其写入格式如下:“1pd26.16”