2014-01-21 5 views
3

Я хочу, чтобы python2.7 распечатать числа с плавающей точкой в ​​научной нотации, вынужденный начать с 0. Например, предположим,питон научной нотации с принудительным ведущим нулем

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

Однако я хочу вывод на печать что выглядит следующим образом:

0.1234567890000000E+22 

Обратите внимание, что показатель увеличивается на один, так как желаемый результат вынужден ведущего нуля. Как я могу это достичь? Спасибо.

+3

Любопытно, почему вы хотите сделать это? Это не является стандартом для научной нотации. Http://en.wikipedia.org/wiki/Scientific_notation – FuriousGeorge

+1

Мне нужно сделать два разных файла вполне совместимыми по цифрам. Один из них написан Fotran 90 с форматом записи, например: «1pd26.16» – Ehsan

ответ

-1

Ну, так как то, что вы хотите сделать, не является «стандартной» научной нотацией, я не уверен, есть ли простой вызов для этого. Вот взломать, однако, что будет работать

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

Это не имеет того же мягкого вывода, как запрошено в вопросе OP ... – Benjamin

4

Пакет fortranformat сделает то, что вы ищете.

import fortranformat as ff 

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

Выход:

' 0.1234567890000000E+22' 
Смежные вопросы