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