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 }
運行結果,以下: