J度空間

          Java數(shù)字、貨幣值和百分?jǐn)?shù)等的格式化處理

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


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

          System.out.println(123456.789);

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

          將會(huì)在Console看到輸出

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

          123456.789

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

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

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

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

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

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

          而要獲得某個(gè)國(guó)家或地區(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("無(wú)格式化輸出:" + 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));?

          ??????//在不同的國(guó)家各地區(qū)數(shù)字表示的格式也有區(qū)別。例如德國(guó)
          ????????? //使用德國(guó)的格式化輸出數(shù)
          ??????????? NumberFormat numberFormatG = NumberFormat.getNumberInstance(Local.GERMANY);
          ????????? System.out.println("德國(guó)數(shù)字輸出形式:" + numberFormatG.format(d));

          ???????? //使用德國(guó)貨幣輸出形式
          ?????????? NumberFormat currencyFormatG = NumberFormat.getCurrencyInstance(Local.GERMANY);
          ???????? System.out.println("德國(guó)貨幣輸出形式:" + currencyFormatG.format(d));

          ???????? //使用美國(guó)貨幣輸出形式
          ?????????? NumberFormat currencyFormatA = NumberFormat.getCurrencyInstance(Local.US);
          ???????? System.out.println("美國(guó)貨幣輸出形式:" + currencyFormatG.format(d));?
          ???????
          ???????? //使用德國(guó)百分?jǐn)?shù)輸出形式?
          ???????????NumberFormat percentFormatG = NumberFormat.getPercentInstance(Local.GERMANY);
          ???????? System.out.println("德國(guó)百分?jǐn)?shù)輸出形式:" + percentFormatG .format(d));

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

          程序輸出

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

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

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

          由于歐元符號(hào)無(wú)法在此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的一個(gè)子類DecimalFormat來(lái)指定輸出格式。

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

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

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

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

          下面對(duì)格式化的數(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);

          ????? //以德國(guó)格式解析?
          ????????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,軟件國(guó)際化的重要性可見(jiàn)一斑。

          posted on 2007-12-19 00:15 藍(lán)色幽默 閱讀(467) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計(jì)

          常用鏈接

          留言簿(4)

          隨筆分類

          文章分類

          相冊(cè)

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 横峰县| 博客| 台江县| 靖西县| 偏关县| 元江| 临沭县| 长宁区| 隆德县| 宁阳县| 遂宁市| 鲁甸县| 长丰县| 博兴县| 津市市| 巩留县| 体育| 玛沁县| 屯门区| 山西省| 萍乡市| 维西| 恭城| 东至县| 杭锦后旗| 桃源县| 松江区| 通河县| 永清县| 澄城县| 汶上县| 军事| 宜兴市| 独山县| 调兵山市| 锡林浩特市| 龙川县| 兰州市| 兴和县| 邻水| 邯郸市|