Java基礎知識強化107:DecimalFormat

1. 引入:java

如何控制輸出數據的精度?git

>1. 使用Math.round方法app

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

答:好比,以下案例:調試

float a = 123.2354f;code

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

若是想要3位就是把2個100都換成1000blog

 

(2)根據上面的規律,咱們能夠定義一個方法,專門用來四捨五入浮點數特定位數ci

 1 package com.himi.test1;  2 
 3 public class CubeRootDemo {  4 
 5     public static void main(String[] args) {  6 
 7         //
 8         // Scanner sc = new Scanner(System.in);  9         //
10         // float number = sc.nextFloat(); 11         //
12         // float result = (float)(Math.round((float)Math.cbrt(number)*10))/10; 13         //
14         // System.out.println(result);
15 
16         System.out.println(roundByDigit(123.2354, 2)); 17  } 18 
19     /**
20  * 21  * @param number 22  * 須要四捨五入的數據 23  * @param digit 24  * 精確到小數點後面的位數 25      */
26     private static double roundByDigit(double number, int digit) { 27         // double temp = Math.pow(10, digit); 28         //
29         // double result = (double)Math.round(number*temp)/temp;
30 
31         return (double) Math.round(number * Math.pow(10, digit)) / Math.pow(10, digit); 32 
33  } 34 
35 }

運行調試:字符串

 

 

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

 

 1 package com.himi.test5;  2 
 3 public class Main5 {  4     public static void main(String[] args) {  5 
 6         double d = 3.1415926;  7         System.out.println(String.format("%.2f", d));  8             
 9         
10  } 11 
12 }

 

輸出爲:

備註:

%.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的示例代碼,以下:

 1 package com.himi.test5;  2 
 3 import java.text.DecimalFormat;  4 
 5 public class Main4 {  6     public static void main(String[] args) {  7 
 8         DecimalFormat df1 = new DecimalFormat("0.0");  9         System.out.println(df1.format(12.34)); 10 
11         DecimalFormat df2 = new DecimalFormat("#.#"); 12         System.out.println(df2.format(12.34)); 13 
14         DecimalFormat df3 = new DecimalFormat("000.000"); 15         System.out.println(df3.format(12.34)); 16 
17         DecimalFormat df4 = new DecimalFormat("###.###"); 18         System.out.println(df4.format(12.34)); 19 
20         System.out.println("------------分組輸出------------------"); 21         DecimalFormat df5 = new DecimalFormat("###,###.0000"); 22         System.out.println(df5.format(111111123456.12)); 23 
24         DecimalFormat df6 = new DecimalFormat("##,###.000"); 25         System.out.println(df6.format(111111123456.12)); 26 
27         DecimalFormat df7 = new DecimalFormat("##,###.000"); 28         System.out.println(df6.format(11112345.1237)); 29 
30         
31         System.out.println("---------------科學計數法---------------"); 32 
33         DecimalFormat df8 = new DecimalFormat("0.000E0000"); 34         System.out.println(df8.format(10000)); 35         System.out.println(df8.format(12345678.345)); 36 
37         System.out.println("---------------百分數的輸出---------------"); 38         DecimalFormat df9 = new DecimalFormat("0000.0000%"); 39         System.out.println(df9.format(0.34567)); 40         System.out.println(df9.format(1.34567)); 41         
42         DecimalFormat df10= new DecimalFormat("#.####%"); 43         System.out.println(df10.format(0.78645)); 44         System.out.println(df10.format(1.34567)); 45         
46 
47         System.out.println("-----------添加前、後修飾字符串,記得要用單引號括起來-----------"); 48         DecimalFormat df11= new DecimalFormat(" '這是個人錢有',###.###'$' "); 49         System.out.println(df11.format(33333443.3333)); 50         
51         
52         
53         System.out.println("-----------添加貨幣表示符號-----------"); 54         DecimalFormat df12= new DecimalFormat(); 55         df12.applyPattern("###,###.##¥"); 56         System.out.println(df12.format(34)); 57         
58         
59         System.out.println("-----------定義正負數模板,記得要用分號隔開-----------"); 60         DecimalFormat df13= new DecimalFormat("00.000;-#.0"); 61         System.out.println(df13.format(345.567)); 62         System.out.println(df13.format(-345.567)); 63         
64             
65         
66  } 67 
68 }

運行結果,以下:

相關文章
相關標籤/搜索