在JSTL一些,天花板在JSTL/EL
<fmt:formatNumber value="${1.6}" type="number" pattern="#"/>
返回2
和以下
<fmt:formatNumber value="${1.4}" type="number" pattern="#"/>
返回1
,我需要2
,若干的天花板。
是否有直接的方式来实现这个JSTL(或唯一的方法是通过使用适当的自定义标签)?
在JSTL一些,天花板在JSTL/EL
<fmt:formatNumber value="${1.6}" type="number" pattern="#"/>
返回2
和以下
<fmt:formatNumber value="${1.4}" type="number" pattern="#"/>
返回1
,我需要2
,若干的天花板。
是否有直接的方式来实现这个JSTL(或唯一的方法是通过使用适当的自定义标签)?
默认的舍入的DecimalFormat
模式所使用的<fmt:formatNumber>
是RoundingMode.HALF_EVEN
。没有办法通过任何标签属性来改变它。只需将0.5
添加到不是奇数的整数值就可以使其表现得像RoundingMode.CEILING
一样。
<fmt:formatNumber value="${bean.number + (bean.number % 1 == 0 ? 0 : 0.5)}"
type="number" pattern="#" />
试试这个代码:
<fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>
其中N是你的变量的名称。
问候
这种方法的好处在于,只需将其更改为'$ {N-(1-(N%1))%1}',就可以轻松将其变为楼层舍入。 – AxeEffect 2014-02-06 16:49:24
你不是指$ {N-(N%1)} @AxeEffect吗? – kacpr 2016-07-12 15:14:44