Формат числа веток без округления десятичных дробей

Как можно в ветке отформатировать число без округления десятичных дробей? Например, если пользователь вводит

12345,35, на выходе должно быть 12 345,35

12345,356, вывод должен быть 12,345,356

12345,3567, на выходе должно быть 12 345,3567

Я пробовал фильтр number_format, но первый параметр - это точность, до которой следует округлить десятичные дроби. Если я использую 12345.35|number_format(4, '.', ',') результат - 12 345,3500, что не является желаемым результатом.

1 ответ

Решение

Вы должны определить количество десятичных знаков в числе перед тем, как его отформатировать. Не совсем очевидно, но я не нахожу другого решения.

Попробуйте с этим макросом:

{% macro show_number(n) %}
  {%- spaceless %}
    {% set decimals = n | split('.')[1] | default('') | length %}
    {{ n | number_format(decimals, '.', ',') }}
  {% endspaceless -%}
{% endmacro %}

Пример запуска здесь

Другие вопросы по тегам