Округляет число с плавающей точкой внутри тега WITH и IF - PullRequest
0 голосов
/ 17 января 2020

Обычно я использую {{ value|floatformat:-2 }} для округления чисел и избавления от 0 (например: 2.00 = 2).

Теперь внутри тега WITH у меня странное поведение.

{% with a.vval_rcov|div:a.vval_100p|mul:100|floatformat:-2 as p1 %}
    {% with d.vval_rcov|div:d.vval_100p|mul:100|floatformat:-2 as p2 %}
        {% with p1|sub:p2 as p3 %}
            <td {% if p3 < 0 %}class="bg-danger" {% elif p3 > 0 %}class="bg-success"{% endif %}>{{ p3 }}%</td>
        {% endwith %} 
    {% endwith %} 
{% endwith %}

Выход для P1 и P2 в порядке.

Пример: p1 = 51,93, p2 = 51,82

Но p3 не отображается что угодно!

Если я уберу |floatformat:-2 на p1 и p2 и добавлю его к p3

{% with a.vval_rcov|div:a.vval_100p|mul:100 as p1 %}
    {% with d.vval_rcov|div:d.vval_100p|mul:100 as p2 %}
        {% with p1|sub:p2|floatformat:-2 as p3 %}
            <td {% if p3 < 0 %}class="bg-danger" {% elif p3 > 0 %}class="bg-success"{% endif %}>{{ p3 }}%</td>
        {% endwith %} 
    {% endwith %} 
{% endwith %}

, тогда p3 получит значение (0.10), но это нормально, но теперь {% if %}{% elif %}{% endif %} странно больше не работают. А также в этом сценарии выходные данные p3 по-прежнему отображают завершающий ноль ...

Пример: p1 = 0,002, p2 = 0,003, p3 = -0,001, p3 отображают -0,00

Есть идеи почему? Я застрял с этим.

...