數字的格式化在解決實際問題時使用非常普遍,比如表示某超市的商品價格需要保留兩位有效數字等。Java主要對浮點型數據進行數字格式化操作,其中浮點型數據包括double型和float型數據。
在Java中使用java.text.DecimalFormat類格式化數字,本節中將着重講解DecimalFormat類。
DecimalFormat類
在Java中對沒有格式化的數據遵循以下原則。
如果數據絕對值大於0.001並且小於10000000,Java將以常規小數形式表示。
如果數據絕對值小於0.001或者大於10000000,使用科學計數法表示。
由於上述輸出格式不能滿足解決實際問題要求,所以通常將結果格式化指定形式進行輸出。在Java中可以使用DecimalFormat類進行格式化操作。
DecimalFormat是NumberFormat的一個子類,用於格式化十進制數字,它可以將一些數字格式化為整數、浮點數、科學計數法、百分數等。
通過使用該類可以為要輸出的數字加上單位或控制數字的精度。一般情況下可以在實例化DecimalFormat對象時傳遞數字格式,也可以通過DecimalFormat類中的applyPattern()方法來實現數字格式化。
當格式化數字時,在DecimalFormat類中使用一些特殊字符構成一個格式化模板,使數字按照一定特殊字符規則進行匹配。下表中列舉了定義格式化模板中的特殊字符及其含義。

數字的格式化輸出
import java.text.DecimalFormat; public class DecimalFormatSimpleDemo { //使用實例化對象時設置格式化模式 static public void SimgleFormat(String pattern, double value) { DecimalFormat myFormat = new DecimalFormat(pattern); //實例化DecimalFormat對象 String output = myFormat.format(value); //將數字進行格式化 System.out.println(value + "\t" + pattern + "\t" + output); } //使用applyPattern()方法對數字進行格式化 static public void UseApplyPatternMethodFormat(String pattern,double value){ DecimalFormat myFormat=new DecimalFormat(); //實例化DecimalFormat對象 myFormat.applyPattern(pattern); //調用applyPatten()方法設置格式化模板 System.out.println(value + " \t\t" + pattern + "\t\t" + myFormat.format(value)); } public static void main(String[] args) { SimgleFormat("###,###.###", 123456.789); //調用靜態SimgleFormat()方法 SimgleFormat("00000000.###kg", 123456.789); //在數字后加上單位 SimgleFormat("000000.000", 123.78); //按照格式模板格式化數字,不存在的位以0顯示 //調用靜態UseApplyPatternMethodFormat()方法 UseApplyPatternMethodFormat("#.###%", 0.789); //將數字轉化為百分數形式 UseApplyPatternMethodFormat("###.##", 123456.789); //將小數點后格式化為兩位 UseApplyPatternMethodFormat("0.00\u2030", 0.789); //將數字轉化為千分數形式 } }
在Eclipse中運行本實例,運行結果如下圖所示。

SimgleFormat()方法是在實例化DecimalFormat對象時為構造方法傳參設置數字格式化模板,而UseApplyPatternMethodFormat()方法是在實例化DecimalFormat對象后調用applyPattern()方法設置數字格式化模板。
在DecimalFormat類中除了可以設置格式化模式來格式化數字之外,還可以使用一些特殊方法對數字進行格式化設置。例如:
DecimalFormat myFormat=new DecimalFormat();
//實例化DecimalFormat類對象
myFormat.setGroupingSize(2);
//設置將數字分組的大小
myFormat.setGroupingUsed(false); //設置是否支持分組
在上述代碼中,setGroupingSize()方法用於設置格式化數字的分組大小,而setGroupingUsed()方法用於設置是否可以對數字進行分組操作。為了使讀者更好理解這兩個方法的使用,請看下面的實例。
例、 在項目中創建DecimalMethod類,在類的主方法中調用setGroupingSize()與setGrouping- Used()方法實現數字的分組。
import java.text.DecimalFormat; public class DecimalMethod { public static void main(String[] args) { DecimalFormat myFormat = new DecimalFormat(); myFormat.setGroupingSize(2); //設置將數字分組為2 String output = myFormat.format(123456.789); System.out.println("將數字以每兩個數字分組 "+output); myFormat.setGroupingUsed(false); //設置不允許數字進行分組 String output2 = myFormat.format(123456.789); System.out.println("不允許數字分組 "+output2); } }
在Eclipse中運行本實例,運行結果如下圖所示。

