2013-07-30 24 views
7

を丸めません。Jinja2のラウンドフィルタは、私は私のテンプレートに次のコードを持っている

data: [ 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818, 44.2765833818 ] 

これは、小数第1位を四捨五入していない:私はページまたはソースを表示するときただし、これは私が取得しています出力されます。テンプレートエラーや何もせずに実行されますが、出力が正しくありません。私の理解from the documentation、さらにはa related stack overflow questionは、私のフォーマットがうまくいくということです。何が欠けているのか、間違っているのですか?

+0

あなたのコードが100'代わりに 'deet.value * 100'の**製品**の'丸めているように見えます。おそらく、テンプレート内ではなく、コード内で乗算を行うことをお勧めします。 – bernie

+0

Gotcha、私はあなたのポイントを取るが、私は100 * deet.valueに切り替えた。ラウンド(3)それは私のためにそれを解決しました。ありがとう! – Mittenchops

答えて

7

フィルター演算子が乗算より優先されていることを認識できませんでした。バーニーさんのコメントフォローアップ

は、私が問題を解決し

{{ 100*deet.value|round(1) }} 

{{ deet.value*100|round(1) }} 

を切り替えます。私はコードが他の場所で処理が行われるべきであることに同意します。

+0

これは分裂のために明らかに機能しません。その場合、Jinjaは結果を丸めることができません。私は、数学は視点ではなくコントローラーで行うべきであるという考えと一致していません。それは良いにおいとして隠された悪臭です。 – sobri

18

丸めたい値の周りに括弧を入れることができます。 (これは@sobriが書いたものに反し、同様部門で働いています。)

{{ (deet.value/100)|round }} 

注:あなたが本当にしたい場合はそうfloatを返しroundintあなたにもそのフィルタを介して値を渡す必要があります。

{{ (deet.value/100)|round|int }} 
1

私はこれを通過しました...必要なint(mem_total/4)in jinja。私はそれを2つの操作を行うことで、それを解決:

{% set LS_HEAP_SIZE = grains['mem_total']/4 %} 
{% set LS_HEAP_SIZE = LS_HEAP_SIZE | round | int %} 
関連する問題