<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<s:if test="#name.equals('最高分')">
<fmt:formatNumber value="${maxScore }" pattern="#.##" minFractionDigits="2" >
</fmt:formatNumber>
</s:if>
在網上查了許多資料都說EL運算式無法取整,的確EL運算式除法結果為浮點型。
例如${8/7} ,${6/7} ,${12/7 } 在頁面的顯示結果分別為:
1.1428571428571428
0.8571428571428571
1.7142857142857142
現在我的目的是只取前面的整數,此時我用的是EL運算式的<fmt:formatNumber />標籤,例如:
<fmt:formatNumber type="number" value="${8/7)}" maxFractionDigits="0"/>
結果為1.
maxFractionDigits="0"表示保留0位小數,即取整,注意:此時取的整數是四捨五入的。
如果是${1/7}結果就是0,如果是${6/7}結果就是1,此方法適合想四捨五入取整的。
當然想保留固定位小數只需將maxFractionDigits="0"中的0做適當修改就可以了,想保留小數點後幾位就改成幾。
當然也有不四捨五入取整的方法。
例如:
<fmt:formatNumber type="number" value="${13-13%7)/7)}"/>
如果用上面的方法結果為2,此方法結果為1,不同目的分別取之。
其實就是先得到餘數,將餘數減去再除,這樣結果剛好是整數,也就不存在四捨五入的問題了。因為減去餘數之後,正好整除,經過本人測試加上maxFractionDigits="0"已經不起作用了。
原文地址:http://hi.baidu.com/qihuitoday/blog/item/db683452da2ae2040cf3e3d7.html/cmtid/d8d9561f559e856ff724e421