作者:DotJox
轉自:csdn
整理:馬嘉楠
如果我們用下列語句輸出一個數
----------------------------------------
System.out.println(123456.789);
----------------------------------------
將會在Console看到輸出
----------------------------------------
123456.789
----------------------------------------
那么如何得到“123,456.789”這種格式化的輸出呢?
這里就需要用到java.text.Format這個類。
不僅是數字,它還提供了貨幣值和百分數的格式化輸出,例如0.58的百分數輸出形式是58%。
要獲得本地的默認格式,可以用下列方法獲得:
NumberFormat.getNumberInstance()
NumberFormat.getCurrencyInstance()
NumberFormat.getOpercentInstance()
而要獲得某個國家或地區的具體格式,可以使用參數Local.XXX。例如,Local.GERMANY,Local.UK。
范例:
---------------------------------------------------------------
import java.text.NumberFormat;
import java.util.Locale;
public class FormatTest{
??? public static void main(String args[]){?
??????? //不使用格式化輸出數?
??????????double d = 10000.0/3.0;
??????? System.out.println("無格式化輸出:" + d);
??????? //使用本地默認格式輸出數
????????? NumberFormat numberFormat = NumberFormat.getNumberInstanc();
??????? //numberFormat.setMaximumFractionDigits(4);?
????????//numberFormat.setMinimumIntegerDigits(6);
??????? String numberString = numberFormat.format(d);
??????? System.out.println("本地默認格式輸出數:" + numberString);
?????? //使用本地默認格式輸出貨幣值
???????? NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
?????? System.out.println("本地默認格式輸出貨幣值:" + currencyFormat.format(d));
?????? //使用本地默認格式輸出百分數
???????? NumberFormat percentFormat = NumberFormat.getPercentInstance();
?????? System.out.println("本地默認格式輸出百分數:" + percentFormat.format(d));?
??????//在不同的國家各地區數字表示的格式也有區別。例如德國
????????? //使用德國的格式化輸出數
??????????? NumberFormat numberFormatG = NumberFormat.getNumberInstance(Local.GERMANY);
????????? System.out.println("德國數字輸出形式:" + numberFormatG.format(d));
???????? //使用德國貨幣輸出形式
?????????? NumberFormat currencyFormatG = NumberFormat.getCurrencyInstance(Local.GERMANY);
???????? System.out.println("德國貨幣輸出形式:" + currencyFormatG.format(d));
???????? //使用美國貨幣輸出形式
?????????? NumberFormat currencyFormatA = NumberFormat.getCurrencyInstance(Local.US);
???????? System.out.println("美國貨幣輸出形式:" + currencyFormatG.format(d));?
???????
???????? //使用德國百分數輸出形式?
???????????NumberFormat percentFormatG = NumberFormat.getPercentInstance(Local.GERMANY);
???????? System.out.println("德國百分數輸出形式:" + percentFormatG .format(d));
???????? System.exit(0);
???? }
?}
?
---------------------------------------------------------------------------------
程序輸出
---------------------------------------
<!--[if !vml]--><!--[endif]-->
---------------------------------------
由于歐元符號無法在此Console輸出,所以顯示?
可以指定顯示的最多(或最少)整數位和小數位。如
---------------------------------------
double d = 10000.0/3.0;
NumberFormat numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println(numberString);
?
---------------------------------------
輸出:
---------------------------------------
003,333.3333
---------------------------------------
整數位不夠的補零,小數截去部分四舍五入。
也可以利用NumberFormat的一個子類DecimalFormat來指定輸出格式。
---------------------------------------
DecimalFormat decimalFormat = new DecimalFormat("######.0000");
String s = decimalFormat.format(d);
---------------------------------------
和前面一樣,顯示6個整數位和4個小數位。
下面對格式化的數字進行解析。
---------------------------------------
import java.util.Locale;
import java.text.NumberFormat;
import java.text.ParseException;
public class ParseFormat{
??? public static void main(String args[]){
??????? //本地格式的解析
????????? NumberFormat numberFormat1 = NumberFormat.getNumberInstance();?
???????Number numb1 = null;
?????? try
????? {
?????????? numb1 = numberFormat1.parse("33,333.33");
?????? }
?????? catch(ParseException e1)
????? {
?????????? System.err.println(e1);
????? }
????? System.out.println(number1);
????? //以德國格式解析?
????????NumberFormat numberFormat2 = NumberFormat.getNumberInstance(Locale.GERMANY);
??????? Number numb2 = null;?
?
??????? try
?????? {
??????????? numb2 = numberFormat2.parse("33,333.33");
?????? }
?????? catch(ParseException e2)
?????? {
??????????? System.err.println(e2);
?????? }
?????? System.out.println(number2);
?????? System.exit(0);
??? }
}
?
---------------------------------
程序輸出:
---------------------------------
33333.33 33.333
?
--------------------------------
?
同樣一種格式33,333.33,有人將之理解為33333.33,也有人認為它是33.333,軟件國際化的重要性可見一斑。
馬嘉楠
jianan.ma@gmail.com
posted on 2006-07-18 23:47
馬嘉楠 閱讀(2308)
評論(0) 編輯 收藏