I have the following code in my template:
data: [{% for deet in deets %} {{ deet.value*100|round(1) }}{% if not loop.last %},{% endif %} {% endfor %}]
I am expecting data rounded to 1 decimal place. However, when I view the page or source, this is the output I'm getting:
data: [ 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818 ]
This is not rounded to 1 decimal place. It runs without a template error or anything, but produces incorrect output. My understanding from the documentation, and even a related stack overflow question, are that my format should work. What am I missing or doing wrong?
You can put parens around the value that you want to round. (This works for division as well, contrary to what @sobri wrote.)
{{ (deet.value/100)|round }}
NOTE: round
returns a float
so if you really want the int
you have to pass the value through that filter as well.
{{ (deet.value/100)|round|int }}
Didn't realize the filter operator had precedence over multiplication!
Following up on bernie's comment, I switched
{{ deet.value*100|round(1) }}
to
{{ 100*deet.value|round(1) }}
which solved the problem. I agree the processing should happen in the code elsewhere, and that would be better practice.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With