web-dev-qa-db-fra.com

Comment utiliser le filtre flottant pour afficher seulement deux chiffres après le point décimal?

J'utilise le modèle Flask/Jinja2 pour afficher un nombre en utilisant le filtre float.

Voici mon code

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

La sortie est un peu gênante:

17/189 (8.99470899471%)

Je cherche un moyen de rendre les places après le point limitées à un nombre par exemple 2.

Sortie désirée:

17/189 (8.99%)
44
Blaise

Cela devient assez simple:

Mon code:

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

Peut être modifié un peu avec:

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

ou en utilisant format:

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

La référence peut être trouvée ici sur jinja2 github issue 7

64
Blaise

Vous pouvez utiliser round pour formater un float avec une précision donnée.

Extrait de les docs :

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

Arrondissez le nombre à une précision donnée. Le premier paramètre spécifie la précision (la valeur par défaut est 0), la seconde la méthode d'arrondi:

  • common arrondit vers le haut ou vers le bas
  • ceil arrondit toujours
  • floor arrondit toujours vers le bas

Si vous ne spécifiez pas une méthode common est utilisée.

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

Notez que même arrondi à 0 précision, un float est retourné. Si vous avez besoin d'un entier réel, dirigez-le via int:

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

Voici une approche ::

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

Ajustez-le comme vous le souhaitez :)

9
Akash Kandpal