freemarker 引擎模板保留两位小数,去尾法不进行四舍五入的方法

发布时间 2023-12-29 16:53:00作者: 滴水穿石~

${4511.25?string("#.#")}  这个表达式的结果为4511.2;并不是传统的四舍五入规则;正确的应该是下面这个表达式:

${4511.25?string("#.#;;roundingMode=halfUp")} 这个表达式的结果为4511.3。

而 ${4511.35?string("#.#")}   这个表达式的结果是4511.4

FreeMarker默认的规则是5可能进位也可能不进位,取决于进位后前面一位是否为偶数,如果是则进位,否则不进位。

在String函数中加入roundingMode=halfUp并与前面表达式用";;"隔开;也就是类似于string("#.#;;roundingMode=halfUp")这种形式可以实现四舍五入。

官方文档:https://freemarker.apache.org/docs/ref_builtins_number.html

上述文档来源:https://blog.csdn.net/bingxing163/article/details/97784845

在String函数中加入roundingMode=halfDown并与前面表达式用";;"隔开;也就是类似于string("#.#;;roundingMode=halfDown")这种形式可以实现去尾保留两位小数。

例如 .ftl页面中<#if totalMoney??>${totalMoney?string("#,##0.00;;roundingMode=halfDown")}</#if>实现每三位用逗号隔开,保留两位小数不进行四舍五入。