7.7.7 使用NumberFormat格式化数字
MessageFormat是抽象类Format的子类, Format抽象类还有两个子类:NumberFormat和DateFormat,它们分别用以实现数值、日期的格式化。 NumberFormat、DateFormat可以将数值、日期转换成字符串,也可以将字符串转换成数值、日期。
图7.9显示了NumberFormat和DateFormat的主要功能。
NumberFormat和DateFormat都包含了format()和parse()方法,其中
format()用于将数值、日期格式化成字符串,parse()用于将字符串解析成数值、日期
如何获取NumberFormat对象
NumberFormat也是一个抽象基类,所以无法通过它的构造器来创建NumberFormat对象,它提供了如下几个类方法来得到NumberFormat对象。
| 方法 | 描述 |
|---|---|
getCurrencyInstance() |
返回默认Locale的货币格式器。如果要获取指定Locale的货币格式器,则在调用该方法时传入指定的Locale。 |
getIntegerInstance() |
返回默认Locale的整数格式器。如果要获取指定Locale的整数格式器,则在调用该方法时传入指定的Locale。 |
getNumberInstance() |
返回默认Locale的通用数值格式器。也可以在调用该方法时传入指定的Locale,从而则获取指定Locale的通用数值格式器。 |
getPercentInstance() |
返回默认Locale的百分数格式器。也可以在调用该方法时传入指定的Locale,获取指定Locale的百分数格式器。 |
一旦取得了NumberFormat对象后,就可以调用它的format()方法来格式化数值,包括整数和浮点数。
程序示例
如下例子程序示范了NumberFormat的三种数字格式化器的用法。
1 | import java.util.*; |
运行结果:
1 | ----中国的格式---- |
NumberFormat也有国际化的作用
德国的小数点比较特殊,它们采用逗号(,)作为小数点;
中国、日本使用¥作为货币符号,而美国则采用$作为货币符号。
同样的数值在不同国家的写法是不同的,而NumberFormat的作用就是把数值转换成不同国家的本地写法,所以NumberFormat其实也有国际化的作用。