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%)
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
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 basceil
arrondit toujoursfloor
arrondit toujours vers le basSi 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
Voici une approche ::
{{ "%.2f"|format(result) }}
Ajustez-le comme vous le souhaitez :)