преобразование экспоненциального в десятичное в python

У меня есть массив в Python, который содержит набор значений, некоторые из них

2.32313 e + 07

2.1155 e+07

1.923 e + 07

11856

112.32

Как преобразовать экспоненциальные форматы в десятичный формат

дополнительно: есть ли способ преобразовать показатель непосредственно в десятичный при печати в UNIX с awk?

3 ответов


Я предполагаю, что у вас есть список, а не массив, но здесь это не имеет большого значения; в 2.6 и более ранних версиях Python что-то вроде:

>>> L = [2.32313e+07, 2.1155e+07, 1.923e+07, 11856, 112.32]
>>> for x in L: print '%f' % x
... 
23231300.000000
21155000.000000
19230000.000000
11856.000000
112.320000

и в 2.6 или более поздней версии .format метод. Я полагаю, вы знаете, что числа сами по себе, как числа, не находятся в каком-либо "формате" - это строки вы получаете путем форматирования чисел, например, для вывода, которые находятся в некотором формате. Кстати, варианты на этом %f может позволить вам контролировать количество десятичные дроби, ширина, выравнивание и т. д.-трудно предложить именно то, что вы можете захотеть, без дополнительных спецификаций от вас.

В awk, вы можете использовать printf.


вы можете использовать locale.format () для форматирования чисел для вывода. Это имеет дополнительное преимущество, поскольку согласуется с любыми локальными соглашениями, которые можно было бы ожидать при представлении чисел. Если вы хотите полный контроль в определенном месте, где вы делаете вывод, вам будет лучше с печать" формат " % vars... вариант.

пример:

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, "")
'C/UTF-8/C/C/C/C'
>>> locale.format("%f", 2.32313e+07, 1)
'23231300.000000'

в ответ на последнюю часть вашего вопроса, awk может использовать то же самое :

awk '{printf "%f\n",}' exponential_file

где exponential_file содержит:

2.32313e+07
2.1155e+07
1.923e+07
11856
112.32

вы можете сделать преобразование в переменную для использования позже. Вот упрощенный пример:

awk '{n = sprintf("%f\n",); print n * 2}' exponential_file