Jinja2过滤器的操作顺序?

dan*_*ngr 4 python rounding jinja2

我不确定Jinja的限制,所以这可能是不可能的......我正在尝试计算我传给Jinja的两个变量的百分比,但我不能让它正确地圆.我想拥有的是:

{{ spygames / games|length * 100 | round(0) | int }}
Run Code Online (Sandbox Code Playgroud)

哪个得到正确的数字(66.666666,因为间谍游戏是2并且有3个游戏),但它呈现为"66.6666666667"(我在html中添加%符号)并且我希望它只是"67".

我也通过在python中获取游戏的长度并将其作为单独的整数值传递来尝试这一点,但它仍然具有相同的结果.

我怎样才能将其整数减少到一个整数?

谢谢!

Mar*_*ers 5

Jinja文档没有指定任何优先规则,但我强烈怀疑过滤器仅应用于100它之前的文字.

对表达式进行分组以确保将过滤器应用于表达式的结果:

{{ (spygames / games|length * 100) | round(0) | int }}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我会使用这个str.format()功能 ; 它有一个%百分比格式选项,包括乘以100:

{{ '{:.0%}'.format(spygames / games|length) }}
Run Code Online (Sandbox Code Playgroud)

确实为输出添加了百分号.