dream.in.java

能以不变应万变是聪明人做事的准则。万事从小事做起,积累小成功,问鼎大成功,是成功者的秘诀。

如何控制输出数字的格式

如何控制输出数字的格式


java.text包中提供了这样的功能。下面首先看一个比较简单的例子:

对于数字的格式化的几个常用的类:

NumberFormat

DecimalFormat

import java.text.*;

import java.util.Locale;

public class FormatTest {

 public static void main(String[] args) {

    NumberFormatnf=NumberFormat.getInstance(Locale.CHINA);

   NumberFormat nf1=NumberFormat.getInstance(Locale.GERMAN);

   System.out.println(nf.format(1245.6));

   System.out.println(nf1.format(1245.6));

 }

}

结果为1,245.6

         1.245,6

通过上面的方法可以将数字根据不同的地区习惯格式化成不同格式,来符合各个不同习惯。

上面是对针对国际化时的数字格式化,下面的例子是控制小数点显示的例子:

import java.text.*;

import java.util.Locale;

public class FormatTest {

 public static void main(String[] args) {

    DecimalFormat df1=newDecimalFormat("####.0000");

   System.out.println(df1.format(12.32));

   Locale.setDefault(Locale.GERMAN);

   DecimalFormat df=new DecimalFormat("0000.0000");

   System.out.println(df.format(12.32));

 }

}

结果为

       12.3200

       00123200

如果我想用科学记数法的格式来输出数字该怎么办呢??看下面的例子:

import java.text.*;

import java.util.Locale;

public class FormatTest {

 public static void main(String[] args) {

    DecimalFormat df=new DecimalFormat("0.00E0000");

   System.out.print(df.format(125487.326558));

 }

}

结果为

       1.25E0005

如何表示百分数呢?请参考下面的代码:

import java.text.*;

import java.util.Locale;

public class FormatTest {

 public static void main(String[] args) {

    NumberFormatnf=NumberFormat.getPercentInstance();

   System.out.println(nf.format(0.25));

   NumberFormat nf2=NumberFormat.getPercentInstance(Locale.GERMAN);

   System.out.println(nf2.format(0.25));

 }

}

结果为

       25

       25

以上逐个介绍了几种不同的数字格式化方法。似乎应该谈谈如何解析已经被格式化的数字了。我们仍然模仿上面的方法举一个简单的例子:

由于被格式化后的数字都是字符型的,所以注意解析函数parse里的参数是String,但是解析后成为Number

import java.text.*;

import java.util.Locale;

public class FormatTest {

 public static void main(String[] args) {

   NumberFormat nf=NumberFormat.getInstance();//获得默认的格式

   NumberFormat nf2=NumberFormat.getInstance(Locale.GERMAN);//获得德国格式

   try{

     System.out.println( nf.parse("1254.25"));

     System.out.println(nf2.parse("1245,24"));

   }catch(Exception e){

     e.printStackTrace();

    }

 }

}

结果为

       1254.25

1245.24



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=213527

posted on 2009-02-25 21:41 YXY 阅读(270) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: