преобразование экспоненциального в десятичное в 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