在java中要求最后結果保留幾位小數的做法


本文章轉自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表示保留的位數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM