1. 在實踐中,有時會遇到數字格式化的需求,比如訂單號的某一段必須為4位,不足的用0占位,或者輸出需要帶上百分號,單位,貨幣符號等,Java的DecimalFormat能和好的支持。
2. 實例化DecimalFormat后,並給實例對象設置格式的pattern字符串(兩種方式)。
DecimalFormat myFormat = new DecimalFormat(String pattern); // 帶格式參數,實例化格式化器
DecimalFormat myFormat = new DecimalFormat(); // 不帶格式參數,實例化格式化器
myFormat.applyPattern(String pattern); // 為格式化器設置格式參數
3. 調用DecimalFormat對象的format()方法進行格式化操作,返回字符串。
String out= myFormat.Format(double value); // 格式化數字
4. pattern格式化表達式說明:
0 :如果該位存在數字則輸出該數字,如果不存在則輸出0;
# :如果該位存在數字則輸出該數字,不存在不做任何輸出;
. :小數分隔符;
- :負號;
,:分組分隔符;
E :科學計數法中分隔位數和指數;
% :放置在數字的前綴或后綴,將數字乘以100,以百分數輸出;
\u2030:放置在數字的前綴或后綴,將數字乘以1000,以千分數輸出;
\u00A4: 放置在數字的前綴或后綴,作為貨幣記號;
' : 本符號為單引號,當上述特殊符號出現在數字中時,應為特殊符號添加單引號,系統會將該特殊符號當做普通符號處理;
5. 格式化舉例
public static void fun(String pattern, double value) {
// DecimalFormat formater = new DecimalFormat(pattern);
DecimalFormat formater = new DecimalFormat(pattern);
formater .applyPattern(pattern);
System.err.println(formater .format(value));
}
public static void main (String []args) {
fun("#,###.###", 123456.789); //123,456.789
fun("00000000.000kg", 123456.789); //00123456.789kg
fun("000000.000", 123.78); // 000123.780
fun("#.#%", 0.789); // 78.9%
fun("#.##", 123456.789); // 123456.79
fun("#.00\u2030", 0.789); // 789.00‰
fun("#\u00A4", 1234); // 1234¥
}
6. DecimalFormat還提供對數字以逗號分段功能:
DecimalFormat myFormat = new DecimalFormat();
myFormat.setGroupingSize(3); //用逗號進行分段時,每個分段的大小,此處為3;
myFormat.setGroupingUsed(false/true); //當為false時上述設置的分組大小無效,為true時才能進行分組;
7. 分段舉例:
public static void fun0(double value) {
DecimalFormat myFormat = new DecimalFormat();
myFormat.setGroupingSize(3); //設置分段間距為3
System.err.println(myFormat.format(value));
}
public static void fun1(double value) {
DecimalFormat myFormat = new DecimalFormat();
myFormat.setGroupingSize(3); //設置分段間距為3
myFormat.setGroupingUsed(false); //不分段
System.err.println(myFormat.format(value));
}
public static void main (String []args) {
fun0(123456.789); //123,456.789
fun1(123456.789); //123456.789
}
