8.2.12 DecimalFormat类

优质
小牛编辑
127浏览
2023-12-01

DecimalFormat类是NumberFormat的子类。DecimalFormat类属于java.text包。通过getXxxInstance方法获得的NumberFormat对象实例实际上就是DecimalFormat类的对象实例。由于DecimalFormat类不是抽象类,因此,可以直接创建DecimalFormat类的对象实例。下面的代码使用无参数的构造方法创建了DecimalFormat类的对象实例:

java.text.DecimalFormat df = new java.text.DecimalFormat();

DecimalFormat类和SimpleDateFormat类一样,也可以通过构造方法指定模式字符串,代码如下:

java.text.DecimalFormat df = new java.text.DecimalFormat("0.0#");

除此之外,还可以使用DecimalFormat类的applyPattern方法指定模式字符串。代码如下:

java.text.DecimalFormat df = new java.text.DecimalFormat();

df.applyPattern("0.0#");

DecimalFormat类也同样使用format方法格式化表示数值的字符串。只是在格式化字符串时要考虑通过DecimalFormat构造方法或applyPattern方法指定的模式字符串。

DecimalFormat类在使用组分隔符时与NumberFormat类有如下的几点不同:

l DecimalFormat类在默认情况下不使用组分隔符,这和NumberFormat类正好相反。

2 DecimalFormat类比NumberFormat类多了个setGroupingSize方法。该方法用来设置每组包含的位数。如该方法的参数值为2,则格式化123456后的字符串为“12,34,56”,如果该方法的参数值为3,则格式化123456后的字符串为“123,456”。

3 如果同时设置了模式字符串和setGroupingSize方法设置每组的位数,则以后一个设置的为准。如模式字符串“#,#”指定每组有一位数字,而setGroupingSize(3)指定每组有3位数字,如果setGroupingSize(3)出现在最后,则使用format方法格式化数值后的字符串就会按着每组3位数字进行分组。实际上,不光是每组的位数,其他的格式(如小数的最大位数和最小位数)也是后一个覆盖前一个设置。

DecimalFormat类中的parse方法和NumberFormat类中的parse方法一样,也是用来解析表示数值的字符串的,使用方法请读者参阅8.2.11节所讲的内容。