我认为它返回1.13,但freemarker返回1.12

什么是正确的?

${(1.125)?string(",##0.00;roundingMode=HALF_UP")}



freemarker版本:2.3.20

最佳答案

那里有3个问题:


您至少需要FreeMarker 2.3.24才能使用“扩展的Java十进制格式”。这是java.text.DecimalFormat模式的非标准扩展,并且由于DecimalFormat相当宽松,因此在旧版本中使用它不会造成错误,但不幸的是,它只是被误解了。
您需要两个; -s,因为第一个分隔正数和负数模式。
halfUp,而不是HALF_UP。 (使用HALF_UP会给出错误消息,但是由于您使用的是太旧的FreeMarker,因此整个过程只会被静默忽略。)


更新:https://freemarker.apache.org/docs/ref_builtins_number.html#topic.extendedJavaDecimalFormat现在警告用户有关前两个陷阱。

关于java - 如何在freemarker中使用roundingMode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49248852/

10-11 16:44