NumberFormat类在国际化中的应用
1 NumberFormat类简介
NumberFormat包含了format和parse方法,其中format用于将数值格式化成字符串,parse用于将字符串解析成数值。
2 NumberFormat的常用方法
getCurrencyInstance:返回默认Locale的货币格式器。也可以在调用该方法传入指定Locale,则获取指定Locale的货币格式器。
getIntegerInstance:返回默认Locale的整数格式器。也可以在调用该方法传入指定Locale,则获取指定Locale的整数格式器。
getNumberInstance:返回默认Locale的通用数值格式器。也可以在调用该方法传入指定Locale,则获取指定Locale的通用数值格式器。
getPercentInstance:返回默认Locale的百分数格式器。也可以在调用该方法传入指定Locale,则获取指定Locale的百分数格式器。
3 代码示例
import java.util.*;
import java.text.*;
public class NumberFormatTest
{
public static void main(String[] args)
{
// 需要被格式化的数字
double db = 1234000.567;
// 创建四个Locale,分别代表中国、日本、德国、美国、法国
Locale[] locales = {Locale.CHINA, Locale.JAPAN
, Locale.GERMAN, Locale.US,Locale.FRANCE};
NumberFormat[] nf = new NumberFormat[15];
// 为上面五个Locale创建15个NumberFormat对象
// 每个Locale分别有通用数值格式器、百分比格式器、货币格式器
for (int i = 0 ; i < locales.length ; i++)
{
nf[i * 3] = NumberFormat.getNumberInstance(locales[i]);
nf[i * 3 + 1] = NumberFormat.getPercentInstance(locales[i]);
nf[i * 3 + 2] = NumberFormat.getCurrencyInstance(locales[i]);
}
for (int i = 0 ; i < locales.length ; i++)
{
String tip = i == 0 ? "----中国的格式----" :
i == 1 ? "----日本的格式----" :
i == 2 ? "----德国的格式----" :
i == 3 ?"----美国的格式----" : "----法国的格式----";
System.out.println(tip);
System.out.println("通用数值格式:"
+ nf[i * 3].format(db));
System.out.println("百分比数值格式:"
+ nf[i * 3 + 1].format(db));
System.out.println("货币数值格式:"
+ nf[i * 3 + 2].format(db));
}
}
}
4 运行结果
----中国的格式----
通用数值格式:1,234,000.567
百分比数值格式:123,400,057%
货币数值格式:¥1,234,000.57
----日本的格式----
通用数值格式:1,234,000.567
百分比数值格式:123,400,057%
货币数值格式:¥1,234,001
----德国的格式----
通用数值格式:1.234.000,567
百分比数值格式:123.400.057%
货币数值格式:¤ 1.234.000,57
----美国的格式----
通用数值格式:1,234,000.567
百分比数值格式:123,400,057%
货币数值格式:$1,234,000.57
----法国的格式----
通用数值格式:1?234?000,567
百分比数值格式:123?400?057 %
货币数值格式:1?234?000,57