2012-11-16 70 views
2

在使用FreeMarker渲染視圖的Spring MVC應用程序中,如何強制FreeMarker始終使用小數點打印BigDecimal值?強制FreeMarker始終使用小數點打印BigDecimal值

例如:

1000.12 -> 1000.12 
1000 -> 1000.00 

我試圖

${value?string("0.##")} 

此正確地打印1000.12作爲1000.12但仍然1000打印爲1000,而不是1000.00。

回答

2

你試過${1000?string("0.00")}

如果需要圓你倒號使用((n * 100)?floor)/100.0表達

+0

是的,我已經嘗試過了。 1000變爲1000.00和1000.12保留1000.12,但1000.4567變爲1000.46(由於某種原因被舍入),而我需要1000.45(數字,因爲它們)。 – manish

+0

然後我建議你使用((n * 100)?floor)/ 100.0 – hoaz

+0

@ manish.in.java:這是因爲FreeMarker只是使用'java.text.DecimalFormat',並且總是使用'ROUND_HALF_EVEN'。 (看起來FreeMarker應該允許自定義的'NumberFormat'實現)。無論如何,你可以爲此寫'TemplateMethodModelEx',並且像'$ {twoDecimals(1000)}'或'$ {my.twoDecimals(1000)}'一樣使用它。 – ddekany