How to use float filter to show just two digits after decimal point?
Solution 1:
It turns to be quite simple:
My code:
{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)
Can be changed a bit with:
{% set proc_err = nb_err|length / sum * 100 %}
({{'%0.2f' % proc_err|float}}%)
or using format:
({{'%0.2f'| format(proc_err|float)}}%)
Reference can be found here on jinja2 github issue 70
Solution 2:
You can use round
to format a float
to a given precision.
Extracted from the docs:
round(value, precision=0, method='common')
Round the number to a given precision. The first parameter specifies the precision (default is 0
), the second the rounding method:
-
common
rounds either up or down -
ceil
always rounds up -
floor
always rounds down
If you don’t specify a method common
is used.
{{ 42.55|round }}
-> 43.0
{{ 42.55|round(1, 'floor') }}
-> 42.5
Note that even if rounded to 0
precision, a float
is returned. If you need a real integer, pipe it through int
:
{{ 42.55|round|int }}
-> 43
Solution 3:
Here is one approach ::
{{ "%.2f"|format(result) }}
Tweak it as you like :)