Oo緣來是你oO


          posts - 120,comments - 125,trackbacks - 0

          作者:DotJox
          轉(zhuǎn)自:csdn
          整理:馬嘉楠

          如果我們用下列語句輸出一個數(shù)

          ----------------------------------------

          System.out.println(123456.789);

          ----------------------------------------

          將會在Console看到輸出

          ----------------------------------------

          123456.789

          ----------------------------------------

          那么如何得到“123,456.789”這種格式化的輸出呢?

          這里就需要用到j(luò)ava.text.Format這個類。

          不僅是數(shù)字,它還提供了貨幣值和百分?jǐn)?shù)的格式化輸出,例如0.58的百分?jǐn)?shù)輸出形式是58%。

          要獲得本地的默認(rèn)格式,可以用下列方法獲得:

          NumberFormat.getNumberInstance()
          NumberFormat.getCurrencyInstance()
          NumberFormat.getOpercentInstance()

          而要獲得某個國家或地區(qū)的具體格式,可以使用參數(shù)Local.XXX。例如,Local.GERMANY,Local.UK。

          范例:

          ---------------------------------------------------------------

          import java.text.NumberFormat;
          import java.util.Locale;

          public class FormatTest{
          ??? public static void main(String args[]){?

          ??????? //不使用格式化輸出數(shù)?
          ??????????double d = 10000.0/3.0;
          ??????? System.out.println("無格式化輸出:" + d);

          ??????? //使用本地默認(rèn)格式輸出數(shù)
          ????????? NumberFormat numberFormat = NumberFormat.getNumberInstanc();
          ??????? //numberFormat.setMaximumFractionDigits(4);?
          ????????//numberFormat.setMinimumIntegerDigits(6);
          ??????? String numberString = numberFormat.format(d);
          ??????? System.out.println("本地默認(rèn)格式輸出數(shù):" + numberString);

          ?????? //使用本地默認(rèn)格式輸出貨幣值
          ???????? NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
          ?????? System.out.println("本地默認(rèn)格式輸出貨幣值:" + currencyFormat.format(d));

          ?????? //使用本地默認(rèn)格式輸出百分?jǐn)?shù)
          ???????? NumberFormat percentFormat = NumberFormat.getPercentInstance();
          ?????? System.out.println("本地默認(rèn)格式輸出百分?jǐn)?shù):" + percentFormat.format(d));?

          ??????//在不同的國家各地區(qū)數(shù)字表示的格式也有區(qū)別。例如德國
          ????????? //使用德國的格式化輸出數(shù)
          ??????????? NumberFormat numberFormatG = NumberFormat.getNumberInstance(Local.GERMANY);
          ????????? System.out.println("德國數(shù)字輸出形式:" + 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));?
          ???????
          ???????? //使用德國百分?jǐn)?shù)輸出形式?
          ???????????NumberFormat percentFormatG = NumberFormat.getPercentInstance(Local.GERMANY);
          ???????? System.out.println("德國百分?jǐn)?shù)輸出形式:" + percentFormatG .format(d));

          ???????? System.exit(0);
          ???? }
          ?}
          ?
          ---------------------------------------------------------------------------------

          程序輸出

          ---------------------------------------

          <!--[if !vml]--><!--[endif]-->

          ---------------------------------------

          由于歐元符號無法在此Console輸出,所以顯示?

          可以指定顯示的最多(或最少)整數(shù)位和小數(shù)位。如

          ---------------------------------------

          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

          ---------------------------------------

          整數(shù)位不夠的補(bǔ)零,小數(shù)截去部分四舍五入。

          也可以利用NumberFormat的一個子類DecimalFormat來指定輸出格式。

          ---------------------------------------

          DecimalFormat decimalFormat = new DecimalFormat("######.0000");
          String s = decimalFormat.format(d);

          ---------------------------------------

          和前面一樣,顯示6個整數(shù)位和4個小數(shù)位。

          下面對格式化的數(shù)字進(jìn)行解析。

          ---------------------------------------

          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,也有人認(rèn)為它是33.333,軟件國際化的重要性可見一斑。



          馬嘉楠
          jianan.ma@gmail.com

          posted on 2006-07-18 23:47 馬嘉楠 閱讀(2310) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 塔河县| 桃园市| 玉田县| 大连市| 江门市| 循化| 潢川县| 怀安县| 武汉市| 邯郸县| 南岸区| 民勤县| 光泽县| 曲松县| 静海县| 大丰市| 彭州市| 云安县| 广东省| 炎陵县| 上思县| 宣恩县| 霍邱县| 青阳县| 阿拉善右旗| 吉安县| 曲周县| 平乐县| 法库县| 昭通市| 如皋市| 永宁县| 花垣县| 阿坝| 宜良县| 新绛县| 东莞市| 江安县| 景宁| 牙克石市| 庆云县|