我认为它返回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/