java格式化數字DecimalFormat

  在輸出數字時,有時須要給數字配上單位,有時須要數字具備必定的精度,也有時須要用科學計數法表示數字。java

關鍵技術剖析:app

v java.text.DecimalFormat類專門用於格式化數字。設計

v 須要爲DecimalFormat提供格式化模式Pattern。經過構造方法或者DecimalFormat的applyPattern方法設置模式。Pattern的類型爲字符串。orm

v 調用DecimalFormat的format實例方法,參數爲待格式化的數字,該方法使用DecimalFormat對象的pattern對參數進行格式化。對象

import java.text.DecimalFormat;ci

 

public class TestDecimalFormat {文檔

public static void main(String[] args) {字符串

DecimalFormat df = new DecimalFormat();form

double data = 1203.405607809;class

System.out.println("格式化以前:" + data);

 

String pattern = "0.0";//1203.4

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

// 能夠在模式後加上本身想要的任何字符,好比單位

pattern = "00000000.000kg";//00001203.406kg

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//#表示若是存在就顯示字符,若是不存在就不顯示,只能用在模式的兩頭

pattern = "##000.000kg";//1203.406kg

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//-表示輸出爲負數,必須放在最前面

pattern = "-000.000";//-1203.406

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//,是分組分隔符 :輸出結果12,03.41

pattern = "-0,00.0#";//-12,03.41

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//E表示輸出爲指數,」E「以前的字符串是底數的格式,以後的是指數的格式。

pattern = "0.00E000";//1.20E003

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//%表示乘以100並顯示爲百分數,要放在最後

pattern = "0.00%";//120340.56%

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//"\u2030"表示乘以1000並顯示爲千分數,要放在最後

pattern = "0.00\u2030";//203405.61‰

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//"\u00A4"貨幣符號,要放在兩端*****1203.41¥

pattern = "0.00\u00A4";//1203.41¥

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

//'用於在前綴或或後綴中爲特殊字符加引號,要建立單引號自己,請連續使用兩個單引號:"# o''clock"。 

pattern = "'#'#" ;//#1203

// pattern = "'#'" ;//#1203

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

 

pattern = "# o''clock" ;//1203 o'clock

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

//''放在中間或後面單引號就顯示在最後,放在最前面單引號就顯示在最前

// pattern = "# o''clock.000" ;//1203.406 o'clock

// pattern = "# .000o''clock";//1203.406 o'clock

// pattern = "# .000''";//1203.406 '

// pattern = "# .''000";//1203.406 '

pattern = "''# .000";//'1203.406 

df.applyPattern(pattern);

System.out.println("採用" + pattern + "模式格式化後:" + df.format(data));

}

}

輸出結果爲:
格式化以前:1203.405607809
採用0.0模式格式化後:1203.4
採用00000000.000kg模式格式化後:00001203.406kg
採用##000.000kg模式格式化後:1203.406kg
採用-000.000模式格式化後:-1203.406
採用-0,00.0#模式格式化後:-12,03.41
採用0.00E000模式格式化後:1.20E003
採用0.00%模式格式化後:120340.56%
採用0.00‰模式格式化後:1203405.61‰
採用0.00¤模式格式化後:1203.41¥
採用'#'#模式格式化後:#1203
採用# o''clock模式格式化後:1203 o'clock
採用''# .000模式格式化後:'1203.406

分析:

² 能夠在java.text.DecimalForm的構造方法中制定模式(pattern),也能夠使用applyPattern方法設置格式模式。

² 格式模式有特定的規則,不太的字符表明不一樣的意思,在使用中須要本身設計格式的模式。經常使用的模式有:「.」、「-」、「#」、「%」、「\u2030」、「,」、「E」、「0」。關於這些模式的具體含義在程序註釋中有詳細的介紹,也能夠參閱JDK的幫助文檔。

相關文章
相關標籤/搜索