我想让 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,因为所需的输出被强制为前导零。我怎样才能做到这一点?谢谢。
fortranformat 包将满足您的需求。
import fortranformat as ff
a=1234567890e12
lineformat = ff.FortranRecordWriter('(1E26.16)')
lineformat.write([a])
输出:
' 0.1234567890000000E+22'
也处理 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
好吧,既然你想做的不是“标准”科学记数法,我不确定是否有一个简单的调用来做到这一点。然而,这是一个 hack,它会起作用
a = 1234567890e12
A = str(a)
exp = A.find('e+')
converted = '0.' + A[0] + A[2:exp] + 'e+' + str(int(A[exp+2:])+1)