本文章轉自http://www.jb51.net/article/121784.htm 和http://www.cnblogs.com/langtianya/p/3986277.html
目前Java支持7中舍入法:
1、 ROUND_UP:遠離零方向舍入。向絕對值最大的方向舍入,只要舍棄位非0即進位。
2、 ROUND_DOWN:趨向零方向舍入。向絕對值最小的方向輸入,所有的位都要舍棄,不存在進位情況。
3、 ROUND_CEILING:向正無窮方向舍入。向正最大方向靠攏。若是正數,舍入行為類似於ROUND_UP,若為負數,舍入行為類似於ROUND_DOWN。Math.round()方法就是使用的此模式。
4、 ROUND_FLOOR:向負無窮方向舍入。向負無窮方向靠攏。若是正數,舍入行為類似於ROUND_DOWN;若為負數,舍入行為類似於ROUND_UP。
5、 HALF_UP:最近數字舍入(5進)。這是我們最經典的四舍五入。
6、 HALF_DOWN:最近數字舍入(5舍)。在這里5是要舍棄的。
7、 HAIL_EVEN:銀行家舍入法。
提到四舍五入那么保留位就必不可少了,在java運算中我們可以使用多種方式來實現保留位。
保留位
方法一:四舍五入
double f =111231.5585;
BigDecimal b =newBigDecimal(f);
double f1 = b.setScale(2, RoundingMode.HALF_UP).doubleValue();
在這里使用BigDecimal ,並且采用setScale方法來設置精確度,同時使用RoundingMode.HALF_UP表示使用最近數字舍入法則來近似計算。在這里我們可以看出BigDecimal和四舍五入是絕妙的搭配。
方式二:
java.text.DecimalFormat df =newjava.text.DecimalFormat(”#.00″);
df.format(你要格式化的數字);
例:new java.text.DecimalFormat(”#.00″).format(3.1415926)
#.00 表示兩位小數 #.0000四位小數 以此類推…
方式三:
doubled =3.1415926;
String result = String .format(”%.2f”);
%.2f %. 表示 小數點前任意位數 2 表示兩位小數 格式后的結果為f 表示浮點型。
方式四:
此外如果使用struts標簽做輸出的話,有個format屬性,設置為format="0.00"就是保留兩位小數
例如:<bean:write name="entity" property="dkhAFSumPl" format="0.00"/>
或者 <fmt:formatNumber type="number" value="${10000.22/100}" maxFractionDigits="0"/>
maxFractionDigits表示保留的位數