:問題は桁の与えられた数の数をフォーマットされ可変数
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
、私は両方を使用して好きではありません " % '演算子と書式メソッドです。
:問題は桁の与えられた数の数をフォーマットされ可変数
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
、私は両方を使用して好きではありません " % '演算子と書式メソッドです。
私はこの1つが好き
>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'
+1私はそれも好きです – Volatility
+1 - それはどのように記述されますか? @ [format-spec](http://docs.python.org/2/library/string.html#formatspec)を簡単に見ています。入れ子にされたformatspecsを持つのは間違いありません。 – sotapme
@sotapme - あなたのリンクされたページに "入れ子になった"という単語を検索します。 – eumiro
*
does what you wantprintf
-スタイル文字列の書式設定です。
>>> def percent(value, digits=0):
... return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'
高度な文字列フォーマット(7.1.3. Format String SyntaxでPEP 3101で定義され、文書化)は、1回のパスでこれを行うことが可能ではないようです。 (7.1.3.1. Format Specification Mini-Language参照:precision
のみinteger
である。)
これは、1回のパスでこれを行うことができます。私の答えを見てください。 – eumiro
精度は数字の桁数を示します。もちろん_it_は整数ですが、浮動小数点数に_applied_することができます –
@gnibbler:私は文法を参照していました: 'precision :: = integer' –
をdocsから:
最小フィールド幅(オプション)。 '*'(アスタリスク)として指定された場合、 実際の幅は値のタプルの次の要素から読み取られ、 変換するオブジェクトは最小のフィールド幅の後に来る(オプションで 精度)。
例:
'{0:.{1}%}'.format(value, digits)
テスト:
def percent(value, digits=0):
print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%
をあなたはそれを好きではありませんか?私にはうまく見える? – Aesthete
@Aesthete:いいえ、私はそれが好きではありません。 –