python - police - Jinja2 filtro redondo no redondeado
jinja2 que es (3)
¡No me di cuenta de que el operador del filtro tenía prioridad sobre la multiplicación!
Siguiendo el comentario de Bernie, cambié
{{ deet.value*100|round(1) }}
a
{{ 100*deet.value|round(1) }}
que resolvió el problema Estoy de acuerdo en que el procesamiento debería ocurrir en el código en otra parte, y esa sería una mejor práctica.
Tengo el siguiente código en mi plantilla:
data: [{% for deet in deets %} {{ deet.value*100|round(1) }}{% if not loop.last %},{% endif %} {% endfor %}]
Estoy esperando datos redondeados a 1 lugar decimal. Sin embargo, cuando veo la página o fuente, este es el resultado que obtengo:
data: [ 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818 ]
Esto no se redondea a 1 lugar decimal. Se ejecuta sin un error de plantilla ni nada, pero produce resultados incorrectos. Mi comprensión de la documentación , e incluso una pregunta relacionada con el desbordamiento de la pila , es que mi formato debería funcionar. ¿Qué estoy perdiendo o haciendo mal?
Me encontré con esto ... necesitaba int (mem_total / 4) en jinja. Lo resolví haciendo dos operaciones:
{% set LS_HEAP_SIZE = grains[''mem_total''] / 4 %}
{% set LS_HEAP_SIZE = LS_HEAP_SIZE | round | int %}
Puede poner parens alrededor del valor que desea redondear. (Esto también funciona para la división, al contrario de lo que escribió @sobri).
{{ (deet.value/100)|round }}
NOTA: round
devuelve un float
así que si realmente quieres el int
tienes que pasar el valor a través de ese filtro también.
{{ (deet.value/100)|round|int }}