I am using Flask/Jinja2 template to show a number using |float filter.
Here is my code
{% set proc_err = nb_err|length / sum * 100 %} ({{proc_err|float}}%)
Output is a bit awkward:
17/189 (8.99470899471%)
I am looking for a way to make the places after dot limited to a number e.g. 2.
Desired output:
17/189 (8.99%)
We will use %. 2f to limit a given floating-point number to two decimal places.
Use str. format() with “{:. 2f}” as string and float as a number to display 2 decimal places in Python. Call print and it will display the float with 2 decimal places in the console.
Using the format() method "%. 2f" denotes 2 decimal places, "%. 3f" denotes 3 decimal places, and so on. Hence in the format argument, we can mention the limit of the decimal places.
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
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 downceil
always rounds upfloor
always rounds downIf 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With