Подтвердить что ты не робот

Как использовать float-фильтр для отображения всего двух цифр после десятичной точки?

Я использую шаблон Flask/Jinja2 для отображения числа с использованием фильтра | float.

Вот мой код

{% set proc_err = nb_err|length / sum * 100 %}
({{proc_err|float}}%)

Выход немного неудобен:

17/189 (8.99470899471%)

Я ищу способ сделать места после того, как точка ограничена числом, например. 2.

Требуемый вывод:

17/189 (8.99%)
4b9b3361

Ответ 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)); 
}