天天看點

Java基礎知識強化107:DecimalFormat

1. 引入:

如何控制輸出資料的精度?

>1. 使用Math.round方法

(1)Java如何把一個float(double)四舍五入到小數點後2位,4位,或者其它指定位數 ?

答:比如,如下案例:

float a = 123.2354f;

float b = (float)(Math.round(a*100))/100   // 輸出123.24

如果想要3位就是把2個100都換成1000

(2)根據上面的規律,我們可以定義一個方法,專門用來四舍五入浮點數特定位數:

運作調試:

>2. 使用String.format(String pattern)方法

輸出為:

Java基礎知識強化107:DecimalFormat

備注:

%.2f     %. 表示小數點前任意位數   2 表示兩位小數    f 表示格式後的結果為浮點型

2. 其實Java提供了資料格式化的類---DecimalFormat,下面就說一下DecimalFormat的使用:

(1)首先介紹一下各種符号的含義:

0   一個數字 

#   一個數字,不包括 0 

.   小數的分隔符的占位符 

,   分組分隔符的占位符 

;   分隔格式。 

-   預設負數字首。 

%  乘以100 和作為百分比顯示 

?      乘以1000 和作為千進制貨币符顯示;用貨币符号代替;如果雙寫,用國際貨币符号代替。如果出現在一個模式中,用貨币十進制分隔符代替十進制分隔符。 

X    字首或字尾中使用的任何其它字元,用來引用字首或字尾中的特殊字元。 

(2)特别的,對 '0' 和 '#' 的差別重點講一下,如下:

0: 

    比實際數字的位數多,不足的地方用0補上。

    new DecimalFormat("00.00").format(3.14)  //結果:03.14

    new DecimalFormat("0.000").format(3.14)  //結果: 3.140

    new DecimalFormat("00.000").format(3.14)  //結果:03.140

    比實際數字的位數少:整數部分不改動,小數部分,四舍五入

    new DecimalFormat("0.000").format(13.146)  //結果:13.146

    new DecimalFormat("00.00").format(13.146)  //結果:13.15

    new DecimalFormat("0.00").format(13.146)  //結果:13.15

#: 

    比實際數字的位數多,不變。

    new DecimalFormat("##.##").format(3.14)  //結果:3.14

    new DecimalFormat("#.###").format(3.14)  //結果: 3.14

    new DecimalFormat("##.###").format(3.14)  //結果:3.14

    new DecimalFormat("#.###").format(13.146)  //結果:13.146

    new DecimalFormat("##.##").format(13.146)  //結果:13.15

    new DecimalFormat("#.##").format(13.146)  //結果:13.15

(3)使用DecimalFormat的示例代碼,如下:

運作結果,如下:

Java基礎知識強化107:DecimalFormat