web-dev-qa-db-ja.com

floatフィルターを使用して小数点以下2桁のみを表示する方法は?

Flask/Jinja2テンプレートを使用して、floatフィルターを使用して数値を表示しています。

ここに私のコードがあります

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)

出力は少し厄介です:

17/189 (8.99470899471%)

ドットの後の場所を数字に制限する方法を探しています。 2。

望ましい出力:

17/189 (8.99%)
44
Blaise

それは非常に簡単になります:

私のコード:

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)

以下で少し変更できます:

{% set proc_err = nb_err|length / sum * 100 %}
({{'%0.2f' % proc_err|float}}%)

またはformatを使用:

({{'%0.2f'| format(proc_err|float)}}%)

参照はここにあります jinja2 github issue 7

64
Blaise

roundを使用して、floatを指定の精度にフォーマットできます。

ドキュメント から抽出:

round(value, precision=0, method='common')

指定された精度に数値を丸めます。最初のパラメーターは精度を指定し(デフォルトは0)、2番目は丸め方法です:

  • commonは切り上げまたは切り捨て
  • ceilは常に切り上げられます
  • floorは常に切り捨てられます

メソッドを指定しない場合、commonが使用されます。

{{ 42.55|round }}
    -> 43.0
{{ 42.55|round(1, 'floor') }}
    -> 42.5

0精度に丸められた場合でも、floatが返されることに注意してください。実数の整数が必要な場合は、intにパイプしてください:

{{ 42.55|round|int }}
    -> 43
50
Paolo Casciello

ここに1つのアプローチがあります::

{{ "%.2f"|format(result) }}

好きなように微調整してください:)

9
Akash Kandpal