6

私は一連の値を含むPythonの配列を持っています。それらのいくつかは

2.32313e+07

2.1155e+07

1.923e+07

11856

112.32

指数形式を小数形式に変換する方法

追加: UNIX で awk を使用して印刷するときに、指数を直接 10 進数に変換する方法はありますか?

4

3 に答える 3

5

配列ではなくリストがあると思いますが、ここでは大きな違いはありません。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を使用できます。

于 2009-10-15T15:27:07.550 に答える
1

locale.format() を使用して、数値を出力用にフォーマットできます。これには、数値の表示で予想されるロケール固有の規則と一貫性があるという追加の利点があります。出力を行う特定の場所で完全な制御が必要な場合は、print "format" % vars... variantを使用することをお勧めします。

例:

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, "")
'C/UTF-8/C/C/C/C'
>>> locale.format("%f", 2.32313e+07, 1)
'23231300.000000'
于 2009-10-15T15:33:13.357 に答える
0

質問の最後の部分への回答としてawk、同じprintf形式を使用できます。

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

exponential_file の内容は次のとおりです。

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

後で使用するために変数に変換できます。簡単な例を次に示します。

awk '{n = sprintf("%f\n",$1); print n * 2}' exponential_file
于 2009-10-15T16:32:11.803 に答える