NumberFormat类
前面我们讲过在使用日期/时间时,为了满足各地区的不同文化习惯需要进行格式化,然而有些时候,对于一些数值也需要进行格式化,为了完成这种功能,JDK提供了一个NumberFormat类,该类与DateFormate类似,也是Format的一个抽象子类,NumberFormat类可以将一个数值格式化为本地格式的字符串,也可以将某个本地格式的数值字符串解析为对应的数值。接下来,介绍NumberFormat对象的几种创建方式和NumberFormat类中的一些方法。
1、获取NumberFormat类的实例对象
实例化NumberFormat类时,可以使用Locale对象作为参数,也可以不使用,接下来列举使用Locale对象作为参数的方法,具体如下:
● getNumberInstance(Locale locale):以参数Locale对象所标识的本地信息来获取具有多种用途的NumberFormat实例对象
● getIntegerInstance(Locale locale):以参数Locale对象所标识的本地信息来获取处理整数的NumberFormat实例对象
● getCurrencyInstance(Locale locale):以参数Locale对象所标识的本地信息来获取处理货币的NumberFormat实例对象
● getPercentInstance(Locale locale):以参数Locale对象所标识的本地信息来获取处理百分比数值的NumberFormat实例对象
2、数值的格式化和解析
NumberFormat与DateFormat类似,为了方便对数值进行格式化和解析,NumberFormat类也提供了两个方法format()和parse(),接下来就针对这两个方法进行讲解。
● format()方法:
例10-3 该方法可以将一个数值格式化为符合某个国家或地区习惯的数值字符串,示例代码如下:
String numberString = NumberFormat.getInstance().format(12345);
● parse()方法
该方法可以将符合某个国家或地区习惯的数值字符串解析为对应的Number对象,示例代码如下:
NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH);
Number number=nf.parse("12.345");
为了让读者更好的学习NumberFormat对象的format()方法和parse()方法,接下来通过一个具体的案例来演示这两个方法的使用,如例1所示。
例1 NumberFormatExam.java
1 package cn.itcast.chapter10;
2 import java.text.*;
3 import java.util.*;
4 public class NumberFormatExam {
5 public static void main(String[] args) throws ParseException {
6 System.out.println("--------------格式化数值--------------");
7 NumberFormat nf=NumberFormat.getNumberInstance();
8 System.out.println("使用本地信息格式化数值:"+nf.format(101.5));
9 NumberFormat nf1=NumberFormat.getPercentInstance();
10 System.out.println("使用百分比形式格式化数值:"+nf1.format(0.45));
11 NumberFormat nf2=NumberFormat.getCurrencyInstance(Locale.US);
12 System.out.println("使用美国地区信息格式化货币:"+nf2.format(1200));
13 System.out.println("--------------解析数值--------------");
14 NumberFormat nf3=NumberFormat.getInstance();
15 System.out.println("使用默认的本地信息解析数值字符串:"+
16 nf3.parse("113.55"));
17 NumberFormat nf4=NumberFormat.getPercentInstance(Locale.US);
18 System.out.println("使用美国地区信息解析百分数字符串:"+
19 nf4.parse("125.3%"));
20 }
21 }
运行NumberFormatExam.java程序,此时,控制台窗口中显示的结果如图1所示。
图1 控制台窗口
从图1可以看出,使用NumberFormat对象的format()方法可以将一些数值按照本地信息进行格式化,也可以按照美国地区进行格式化,使用NumberFormat对象的parse()方法可以将一些数值字符串解析为本地区域的数值对象,也可以解析为美国地区的数值对象。需要注意的是,在使用parse()方法时,解析的数值字符串要符号指定国家和地区的表现形式,否则会抛出异常。