Oo緣來是你oO


          posts - 120,comments - 125,trackbacks - 0

          作者: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 馬嘉楠 閱讀(2309) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 海兴县| 德州市| 景谷| 修水县| 武强县| 治县。| 原平市| 武夷山市| 和政县| 靖远县| 抚宁县| 肥东县| 阿拉善左旗| 西安市| 镇雄县| 彭泽县| 青铜峡市| 五莲县| 右玉县| 濮阳市| 大丰市| 丰原市| 腾冲县| 乐亭县| 阿拉善左旗| 乌鲁木齐市| 安塞县| 正镶白旗| 略阳县| 剑河县| 甘谷县| 西昌市| 思茅市| 色达县| 莱芜市| 四子王旗| 怀安县| 曲周县| 麟游县| 长岛县| 准格尔旗|