freemark数值如何保留两位小数的同时,使用进一法

例如我要使 123.451 -> 123.46
使用freemarker ${123.451?String(",##0.00)} 得到的却是 123.45
我试过使用ceiling函数,但是${123.45?ceiling} 得到的是124
该如何得到我想要保留的位数并且尾数使用进一法呢

阅读 4.6k
1 个回答
  1. 修改原数, 四舍五入就加 0.005, 进一就加0.009或0.0099999,看心情
  2. 放大100倍,ceilling, 再缩小100倍

<#function round2 n>
     <#if n?is_number><#return ((n*100)?round/100)? 
string><#else><#return n></#if>
</#function>

<#escape x as round2(x)>
... 可以这一段模板中的数都按round2规则输出  ...

</#escape>

或用ceilling, 如您所需

<#function round2 n>
     <#if n?is_number><#return ((n*100)?ceiling/100)? 
string><#else><#return n></#if>
</#function>
推荐问题