1. 程式人生 > >你用過java.text.DecimalFormat嗎?

你用過java.text.DecimalFormat嗎?

在java專案開發中,我們經常會對數字操作,尤其是對小數的操作很頻繁。如果是對小數保留一定的小數位,或者以百分比顯示,那麼我們自己也許能夠實現這些功能。但是自己實現的效能和健壯性就需要考量,其實jdk已經給我們提供了很多完成這些需求的方法。下面我們就來簡單介紹下java.text包下的DecimalFormat類。 由jdk1.7 參考手冊知,DecimalFormat類是NumberFormat類的具體實現,提供了豐富的格式化和解析數字的操作方法,比如整數、浮點型、百分比和貨幣。在講解具體怎麼對各種型別進行格式化之前,我們首先介紹一下DecimalFormat的一些建構函式。
//預設的方言和格式化模板
DecimalFormat defaultFormat = new DecimalFormat();
//指定格式化模板,預設方言
DecimalFormat patternFormat = new DecimalFormat("0");
//指定中國方言和格式化模板
DecimalFormat decimalFormat = new DecimalFormat("0",new DecimalFormatSymbols(Locale.CHINA));


本文主要利用第一種建構函式,主要是因為在專案中,我們只要構造一個物件即可,但是可以更換格式化模板。 1.整數
在這一小節中,我們主要介紹對整數的格式化操作,後文所有程式碼都假設已經構造了DecimalFormat物件。首先,我們看一個例子:
//指定格式化模式
String pattern = "0";
//應用格式化模式
defaultFormat.applyPattern(pattern);
int number = 6748;//需要格式的整型
String result = defaultFormat.format(number);
System.out.println(result);//result = 6748


上面的例子中,我們首先定義一個格式化模式pattern="0",這裡的0代表數字,如果number的位數大於等於pattern的0的個數,result=number。否則不夠的位數以0填充。我們來看下面的例子:
//指定格式化模式
String pattern = "00000";
//應用格式化模式
defaultFormat.applyPattern(pattern);
int number = 6748;//需要格式的整型
String result = defaultFormat.format(number);
System.out.println(result);//result = 06748


我們設定pattern為5個0,那麼結果是number,但是高位會用0填充,以達到pattern的位數。除了0,還有其他的格式化符號,它們都代表著具體的含義。
上面的#號和0的含義相同,都是代表數字,不同的是其不會用0填充,不夠位數就不顯示。 2.浮點型 對浮點型的格式化也是依賴於pattern,我們可以自定義小數位數,小數點。
//定義保留兩位小數(四捨五入),小數點前為4位數,不夠則用0填充
String pattern = "0000.00";
//應用格式化模式
defaultFormat.applyPattern(pattern);
double salary = 6748.346;//需要格式的整型
String result = defaultFormat.format(salary);
System.out.println(result);//result = 6748.34


上面的例子,我們定義了格式化模式,保留兩位小數,小數位多則四捨五入。 3.百分比 小數以百分比顯示,只需要修改pattern的值即可
//定義保留兩位小數(四捨五入)
String pattern = "0.00%";
//應用格式化模式
defaultFormat.applyPattern(pattern);
defaultFormat.setDecimalSeparatorAlwaysShown(true);
double salary = 0.346;//需要格式的整型
String result = defaultFormat.format(salary);
System.out.println(result);//result = 34.60%


4.貨幣
//定義保留兩位小數(四捨五入),小數點前為4位數,不夠則用0填充
String pattern = "\u00A4#,###,###.00";
//應用格式化模式
defaultFormat.applyPattern(pattern);
defaultFormat.setDecimalSeparatorAlwaysShown(true);
double salary = 543242.346;//需要格式的整型
String result = defaultFormat.format(salary);
System.out.println(result);//result = ¥543,242.35


上面的例子中,pattern = "\u00A4#,###,###.00",\u00A4代表貨幣符號¥,#,###,###.00表示以會計格式顯示,保留兩位小數。
總結:本文主要介紹了DecimalFormat類,其有著對整數、小數、百分比和貨幣操作的方法。使用這些方法,我們很方便在專案開發中使用。還是那句話,優秀java開發工程第一步就是熟練應用jdk中的常用類。一點一滴,成就自己。