在輸出數字時,有時須要給數字配上單位,有時須要數字具備必定的精度,也有時須要用科學計數法表示數字。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的幫助文檔。