Java 强制FreeMarker始终打印带小数点的BigDecimal值
在使用FreeMarker渲染视图的Spring MVC应用程序中,如何强制FreeMarker始终打印带有小数点的BigDecimal值 例如:Java 强制FreeMarker始终打印带小数点的BigDecimal值,java,spring-mvc,freemarker,bigdecimal,Java,Spring Mvc,Freemarker,Bigdecimal,在使用FreeMarker渲染视图的Spring MVC应用程序中,如何强制FreeMarker始终打印带有小数点的BigDecimal值 例如: 1000.12 -> 1000.12 1000 -> 1000.00 我试过了 ${value?string("0.##")} 这将1000.12正确地打印为1000.12,但1000仍然打印为1000,而不是1000.00。您是否尝试过${1000?字符串(“0.00”)} 如果您需要将数字向下舍入,请使用((n*100)?f
1000.12 -> 1000.12
1000 -> 1000.00
我试过了
${value?string("0.##")}
这将1000.12正确地打印为1000.12,但1000仍然打印为1000,而不是1000.00。您是否尝试过
${1000?字符串(“0.00”)}
如果您需要将数字向下舍入,请使用
((n*100)?floor)/100.0
表达式是的,我已经尝试过了。1000变为1000.00,1000.12保持为1000.12,但1000.4567变为1000.46(由于某些原因而四舍五入),而我需要1000.45(数字不变)。然后我建议您使用((n*100)?floor)/100。0@manish.in.java:这是因为FreeMarker只使用了java.text.DecimalFormat
,而且总是使用ROUND\u-HALF\u甚至
。(FreeMarker应该允许自定义NumberFormat
实现)。无论如何,您可以为此编写TemplateMethodModelEx
,并像${twoDecimals(1000)}
或${my.twoDecimals(1000)}
一样使用它。我感谢您提供的指针。我将按照你的建议去做。