2

Python 2.7.3

>>> print '%2.2f' % 0.1
0.10

私が持っているドキュメントでは、入力に100を掛けることを除いて、タイプ%はタイプfと同じである必要があると述べています。

>>> print '%2.2%' % 0.1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
4

3 に答える 3

8

参照しているフォーマッターを持つ新しいフォーマット式を使用します

print "{:%}".format(0.1)
#10.000000%

整数部分だけが必要な場合は、精度仕様を使用できます

print "{:.0%}".format(0.1)
#10%

のドキュメントを参照してください

http://docs.python.org/2/library/string#formatspec

少し拡張すると、新しいフォーマット指定子は古いフォーマット指定子よりも実際に強力です。まず第一に、それは順序または名前でパラメータを呼び出すのは本当に簡単です

"play the {instrument} all {moment}, even if my {instrument} is old".format(moment='day', instrument='guitar')
#'play the guitar all day, even if my guitar is old'

次に、ドキュメントに示されているように、オブジェクトのプロパティにアクセスできます。

"the real component is {0.real} and the imaginary one is {0.imag}".format(3+4j)
#'the real component is 3.0 and the imaginary one is 4.0'

これ以外にもたくさんありますが、すべてドキュメントに記載されています。これは非常に明確です。

于 2012-11-23T00:42:34.323 に答える
1
print '%2.2%' % 0.1

フォーマット文字列(%)に2つのプレースホルダーがあるため、不満があることを示します

于 2012-11-23T00:44:07.583 に答える
1

この質問に出くわしました。.formatPython 3では、上記と同様の方法でfstringsを使用できます(したがって、を回避できます)。形式は次のとおりです。

print(f"{your_number:.n_decimals%}")

例えば。

>>> print(f"{0.0350:.2%}")
3.50%
于 2021-11-26T16:22:27.950 に答える