EL表示式取整,去固定小數位數數值 fmt標籤

NO IMAGE

            一般來說我們是無法實現EL表示式取整的。對於EL表示式的除法而言,他的結果是浮點型。

            如:${6/7},他的結果是:0.8571428571428571。對於這個我們是無法來實現取整的。但是我們現在的目的就是要EL表示式來實現取整。這個時候需要用到<fmt:formatNumber />這個標籤。該標籤的說明如下:

          功能:該標籤用來格式化數值即設定特定語言環境下的數值輸出方式

          語法: <fmt:formatNumber value=”數值” ……./>

          屬性說明:Value要轉換的數值。

                         Type格式化方式(currency,number,percent) 。

                         Pattern使用者自定義的格式。

                         var儲存轉換結果的變數。

                         scope變數的範圍。

          如:<fmt:formatNumber type=”number” value=”${8/7)}” maxFractionDigits=”0″/>  結果為1。

          其中maxFractionDigits=”0″表示保留0位小數,這樣就可以實現取整了。同時這裡是按照四捨五入的規則來進行取整的。如果是${2/6}結果就是0,如果是${6/7}結果就是1。

         在這裡我們同樣也可以設定保留n為小數,僅需要設定maxFractionDigits=”n”即可實現。

例如${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″已經不起作用了