3

場合によっては算術に使用する必要があり、他の場合には文字列として使用する必要がある 10 進数の値に問題があります。具体的には、レートのリストがあります。例:

rates=[0.1,0.000001,0.0000001]

そして、これらを使用して画像の圧縮率を指定しています。これらの値を特定の順序でソートできるようにする必要があるため、最初はこれらの値を数値として持つ必要があります。また、これらの各値を文字列に変換できるようにして、1) レートをファイル名に埋め込み、2) レートとその他の詳細を CSV ファイルに記録できるようにしたいと考えています。最初の問題は、小数点以下 6 桁を超える浮動小数点数は、文字列に変換すると科学的形式になることです。

>>> str(0.0000001)
'1e-07'

だから私はPythonのDecimalモジュールを使ってみましたが、いくつかの浮動小数点数を科学表記法に変換しています(私が読んだドキュメントとは一見反対です)。元:

>>> Decimal('1.0000001')
Decimal('1.0000001')
# So far so good, it doesn't convert to scientific notation with 7 decimal places
>>> Decimal('0.0000001')
Decimal('1E-7')
# Scientific notation, back where I started.

複数の投稿で提案されているように、文字列の書式設定も調べましたが、うまくいきませんでした。この Python 初心者は、あらゆる提案や指針を高く評価しています。

4

4 に答える 4

5

次に、文字列形式を指定する必要があります。

["%.8f" % (x) for x in rates]

これにより が得られ['0.10000000', '0.00000100', '0.00000010']ます。にDecimalも対応。

于 2011-04-26T04:52:30.357 に答える
5
'{0:f}'.format(Decimal('0.0000001'))

上記はあなたのために働くはずです

于 2011-04-26T04:59:53.367 に答える
4

% formatting、特に浮動小数点の変換を参照してください。

'e' 浮動小数点指数形式 (小文字)。(3)

'E' 浮動小数点指数形式 (大文字)。(3)

'f' 浮動小数点 10 進形式。(3)

'F' 浮動小数点 10 進形式。(3)

'g' 浮動小数点形式。指数が -4 未満または精度以上の場合は小文字の指数形式を使用し、それ以外の場合は 10 進数形式を使用します。(4)

'G' 浮動小数点形式。指数が -4 未満または精度以上の場合は大文字の指数形式を使用し、それ以外の場合は 10 進数形式を使用します。(4)

fフォーマットを使用した例。

>>> ["%10.7f" %i for i in rates]
[' 0.1000000', ' 0.0000010', ' 0.0000001']
>>> 

新しい (2.6 以降)str.format()メソッドを使用することもできます。

>>> ['{0:10.7f}'.format(i) for i in rates]
[' 0.1000000', ' 0.0000010', ' 0.0000001']
>>> 
于 2011-04-26T05:02:16.593 に答える