java之DecimalFormat用法


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
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM