Как использовать float-фильтр для отображения всего двух цифр после десятичной точки?
Я использую шаблон Flask/Jinja2 для отображения числа с использованием фильтра | float.
Вот мой код
{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)
Выход немного неудобен:
17/189 (8.99470899471%)
Я ищу способ сделать места после того, как точка ограничена числом, например. 2.
Требуемый вывод:
17/189 (8.99%)
Ответы
Ответ 1
Это оказывается довольно простым:
Мой код:
{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)
Можно немного изменить:
{% set proc_err = nb_err|length / sum * 100 %}
({{'%0.2f' % proc_err|float}}%)
или используя формат:
({{'%0.2f'| format(proc_err|float)}}%)
Ссылка можно найти здесь на jinja2 github issue 70
Ответ 2
Вы можете использовать round
для форматирования float
с заданной точностью.
Извлечен из документов:
round(value, precision=0, method='common')
Обозначьте число до заданной точности. Первый параметр указывает точность (по умолчанию - 0
), второй метод округления:
-
common
раунды вверх или вниз
-
ceil
всегда округляется
-
floor
всегда округляется вниз
Если вы не указали метод common
.
{{ 42.55|round }}
-> 43.0
{{ 42.55|round(1, 'floor') }}
-> 42.5
Обратите внимание, что даже если округленная до 0
точность, возвращается float
. Если вам нужно реальное целое число, проведите его через int
:
{{ 42.55|round|int }}
-> 43
Ответ 3
(Я предполагаю, что вы используете Ionic v2)
Используйте этот интерфейсный код:
<div *ngIf="device.usage > 0">
{{ Round(device.usage)}} min
</div>
и поместите в файл .ts следующую функцию:
Round(number):number
{
return parseFloat(Number((number/1000) / 60).toFixed(2));
}