The Jinja documentation doesn't specify any precedence rules, but I strongly suspect that the filter is only applied to the 100
literal just before it.
Group your expressions to make sure that a filter is applied to the outcome of the expression:
{{ (spygames / games|length * 100) | round(0) | int }}
Personally, I'd use the str.format()
function; it has a %
percentage formatting option that includes multiplication by 100:
{{ '{:.0%}'.format(spygames / games|length) }}
This does add a percent sign to the output.