数字格式化

数字的格式化在解决实际问题时使用非常普遍,比如表示某超市的商品价格需要保留两位有效数字等。Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据。

在Java中使用java.text.DecimalFormat类格式化数字,本节中将着重讲解DecimalFormat类。

  DecimalFormat

  在Java中对没有格式化的数据遵循以下原则。

  如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示。

  如果数据绝对值小于0.001或者大于10000000,使用科学计数法表示。

  由于上述输出格式不能满足解决实际问题要求,所以通常将结果格式化指定形式进行输出。在Java中可以使用DecimalFormat类进行格式化操作。

  DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字,它可以将一些数字格式化为整数、浮点数、科学计数法、百分数等。

通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以在实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。

  当格式化数字时,在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定特殊字符规则进行匹配。下表中列举了定义格式化模板中的特殊字符及其含义。

数字的格式化输出

import java.text.DecimalFormat;  
public class DecimalFormatSimpleDemo {  
     //使用实例化对象时设置格式化模式  
static public void SimgleFormat(String pattern,  double value) {       
 DecimalFormat myFormat = new DecimalFormat(pattern);   //实例化DecimalFormat对象  
        String output = myFormat.format(value);                   
    //将数字进行格式化  
      System.out.println(value + "\t" + pattern +  "\t" + output);  
}  

    //使用applyPattern()方法对数字进行格式化  
    static public void UseApplyPatternMethodFormat(String pattern,double value){  
        DecimalFormat myFormat=new DecimalFormat();  //实例化DecimalFormat对象  
        myFormat.applyPattern(pattern);   //调用applyPatten()方法设置格式化模板  
     System.out.println(value + " \t\t" + pattern  + "\t\t" + myFormat.format(value)); 
}  

    public static void main(String[] args) {  
        SimgleFormat("###,###.###", 123456.789);    //调用静态SimgleFormat()方法  
        SimgleFormat("00000000.###kg", 123456.789);  //在数字后加上单位  
        SimgleFormat("000000.000", 123.78);   //按照格式模板格式化数字,不存在的位以0显示  
        //调用静态UseApplyPatternMethodFormat()方法  
        UseApplyPatternMethodFormat("#.###%", 0.789);     //将数字转化为百分数形式  
        UseApplyPatternMethodFormat("###.##", 123456.789); //将小数点后格式化为两位  
        UseApplyPatternMethodFormat("0.00\u2030", 0.789); //将数字转化为千分数形式  
    }  
} 

在Eclipse中运行本实例,运行结果如下图所示。

SimgleFormat()方法是在实例化DecimalFormat对象时为构造方法传参设置数字格式化模板,而UseApplyPatternMethodFormat()方法是在实例化DecimalFormat对象后调用applyPattern()方法设置数字格式化模板。

在DecimalFormat类中除了可以设置格式化模式来格式化数字之外,还可以使用一些特殊方法对数字进行格式化设置。例如:

DecimalFormat myFormat=new DecimalFormat();   

//实例化DecimalFormat类对象  

myFormat.setGroupingSize(2);                      

//设置将数字分组的大小  

myFormat.setGroupingUsed(false); //设置是否支持分组 

在上述代码中,setGroupingSize()方法用于设置格式化数字的分组大小,而setGroupingUsed()方法用于设置是否可以对数字进行分组操作。为了使读者更好理解这两个方法的使用,请看下面的实例。

例、 在项目中创建DecimalMethod类,在类的主方法中调用setGroupingSize()与setGrouping- Used()方法实现数字的分组。

import java.text.DecimalFormat;  
public class DecimalMethod {  
    public static void main(String[] args) {  
        DecimalFormat myFormat = new DecimalFormat();  
        myFormat.setGroupingSize(2);    //设置将数字分组为2  
        String output = myFormat.format(123456.789);  
        System.out.println("将数字以每两个数字分组 "+output);  
        myFormat.setGroupingUsed(false); //设置不允许数字进行分组  
        String output2 = myFormat.format(123456.789);  
         System.out.println("不允许数字分组 "+output2);  
    }  
} 

在Eclipse中运行本实例,运行结果如下图所示。

 

posted @ 2017-10-29 23:29  zheting  阅读(3155)  评论(0编辑  收藏  举报