Java
中数字格式的处理
.
主要是用到抽象类
java.text.NumberFormat
和它的子类
java.text..DecimalFormat.
具体的细节可以查看
API
文档,总结一下数字格式化的使用方法:
为了格式化当前语言环境的数字,要使用一个工厂类方法:
myString = NumberFormat.getInstance().format(myNumber);
要格式化不同语言环境的日期,可在 getInstance 的调用中指定它:
NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
DecimalFormat
是 NumberFormat
的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
要获取具体语言环境的 NumberFormat
(包括默认语言环境),可调用 NumberFormat
的某个工厂方法,如 getInstance()
。通常不直接调用 DecimalFormat
的构造方法,因为 NumberFormat
的工厂方法可能返回不同于 DecimalFormat
的子类。如果需要自定义格式对象,可执行:
NumberFormat f
=
NumberFormat.getInstance(loc);
if
(f
instanceof
DecimalFormat)
{
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
要使用DecimalFormat对象,必须提供给它提供一个格式化的模式(pattern):
String pattern = …
DecimalFormat df = new DecimalFormat(pattern);
或者:
DecimalFormat df = new DecimalFormat();
df. applyPattern(pattern);
然后就调用它的format方法就行了。下面是一些模式运用的例子:
//
The 0 symbol shows a digit or 0 if no digit present
NumberFormat formatter
=
new
DecimalFormat(
"
000000
"
);
String s
=
formatter.format(
-
1234.567
);
//
-001235
//
notice that the number was rounded up
//
The # symbol shows a digit or nothing if no digit present
formatter
=
new
DecimalFormat(
"
##
"
);
s
=
formatter.format(
-
1234.567
);
//
-1235
s
=
formatter.format(
0
);
//
0
formatter
=
new
DecimalFormat(
"
##00
"
);
s
=
formatter.format(
0
);
//
00
//
The . symbol indicates the decimal point
formatter
=
new
DecimalFormat(
"
.00
"
);
s
=
formatter.format(
-
.
567
);
//
-.57
formatter
=
new
DecimalFormat(
"
0.00
"
);
s
=
formatter.format(
-
.
567
);
//
-0.57
formatter
=
new
DecimalFormat(
"
#.#
"
);
s
=
formatter.format(
-
1234.567
);
//
-1234.6
formatter
=
new
DecimalFormat(
"
#.######
"
);
s
=
formatter.format(
-
1234.567
);
//
-1234.567
formatter
=
new
DecimalFormat(
"
.######
"
);
s
=
formatter.format(
-
1234.567
);
//
-1234.567
formatter
=
new
DecimalFormat(
"
#.000000
"
);
s
=
formatter.format(
-
1234.567
);
//
-1234.567000
//
The , symbol is used to group numbers
formatter
=
new
DecimalFormat(
"
#,###,###
"
);
s
=
formatter.format(
-
1234.567
);
//
-1,235
s
=
formatter.format(
-
1234567.890
);
//
-1,234,568
//
The ; symbol is used to specify an alternate pattern for negative values
formatter
=
new
DecimalFormat(
"
#;(#)
"
);
s
=
formatter.format(
-
1234.567
);
//
(1235)
//
The ' symbol is used to quote literal symbols
formatter
=
new
DecimalFormat(
"
'#'#
"
);
s
=
formatter.format(
-
1234.567
);
//
-#1235
formatter
=
new
DecimalFormat(
"
'abc'#
"
);
s
=
formatter.format(
-
1234.567
);
//
-abc1235