14

これは、このフォーマット関数を作成するためのクリーンな方法です。

def percent(value,digits=0):
    return ('{0:.%d%%}' % digits).format(value)

>>> percent(0.1565)
'16%'

>>> percent(0.1565,2)
'15.65%'

問題は、指定された桁数で数値をフォーマットすることです。「%」演算子とフォーマットメソッドの両方を使用するのは好きではありません。

4

3 に答える 3

35

私はこれが好きです:

'{0:.{1}%}'.format(value, digits)

テスト:

>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'
于 2013-02-18T09:01:50.517 に答える
3

*printf-スタイルの文字列フォーマットのために、あなたが望むことをします。

>>> def percent(value, digits=0):
...     return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'

高度な文字列フォーマット(PEP 3101で定義され、7.1.3で文書化されています。フォーマット文字列構文)は、1回のパスでこれを実行できないようです。(7.1.3.1を参照してください。フォーマット仕様Mini-Language:のみprecisionですinteger。)

于 2013-02-18T08:44:20.650 に答える
2

ドキュメントから:

最小フィールド幅(オプション)。'*'(アスタリスク)として指定された場合、実際の幅は値のタプルの次の要素から読み取られ、変換するオブジェクトは最小フィールド幅とオプションの精度の後になります。

例:

def percent(value, digits=0):
    print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%
于 2013-02-18T08:47:37.757 に答える