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
其实也有国际化的作用。