DecimalFormat,NumberFormat
在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出,或者设定小数位数等,现稍微总结如下。
主要使用的类:java.text.DecimalFormat
1。实例化对象,可以用如下两种方法:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
因为DecimalFormat继承自NumberFormat。
2。设定小数位数
系统默认小数位数为3,如:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
System.out.println(df.format(12.3456789));
输出:12.346
现在可以通过如下方法把小数为设为两位:
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789));
则输出为:12.35
3。将数字转化为百分比输出,有如下两种方法:
(1)
df.applyPattern("##.##%");
System.out.println(df.format(12.3456789));
System.out.println(df.format(1));
System.out.println(df.format(0.015));
输出分别为:1234.57% 100% 1.5%
(2)
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789*100)+"%");
System.out.println(df.format(1*100)+"%");
System.out.println(df.format(0.015*100)+"%");
输出分别为:
1,234.57% 100% 1.5%
4。设置分组大小
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
System.out.println(df1.format(123456789));
输出:1,23,45,67,89
还可以通过df1.setGroupingUsed(false);来禁用分组设置,如:
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
df1.setGroupingUsed(false);
System.out.println(df1.format(123456789));
输出:123456789
5。设置小数为必须为2位
DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();
df2.applyPattern("0.00");
System.out.println(df2.format(1.2));
输出:1.20
//定义一个数字格式化对象,格式化模板为".##",即保留2位小数.
DecimalFormat a = new DecimalFormat(".##");
String s= a.format(333.335);
System.err.println(s);
//说明:如果小数点后面不够2位小数,不会补零.参见Rounding小节
//---------------------------------------------
//---------------------------------------------
//定义一个数字格式化对象,格式化模板为".##",即保留2位小数.
DecimalFormat a = new DecimalFormat(".##");
String s= a.format(333.335);
System.err.println(s);
//说明:如果小数点后面不够2位小数,不会补零.参见Rounding小节
//---------------------------------------------
//-----------------------------------------------
//可以在运行时刻用函数applyPattern(String)修改格式模板
//保留2位小数,如果小数点后面不够2位小数会补零
a.applyPattern(".00");
s = a.format(333.3);
System.err.println(s);
//------------------------------------------------
//------------------------------------------------
//添加千分号
a.applyPattern(".##u2030");
s = a.format(0.78934);
System.err.println(s);//添加千位符后,小数会进三位并加上千位符
//------------------------------------------------
//------------------------------------------------
//添加百分号
a.applyPattern("#.##%");
s = a.format(0.78645);
System.err.println(s);
//------------------------------------------------
//------------------------------------------------
//添加前、后修饰字符串,记得要用单引号括起来
a.applyPattern("'这是我的钱$',###.###'美圆'");
s = a.format(33333443.3333);
System.err.println(s);
//------------------------------------------------
//------------------------------------------------
//添加货币表示符号(不同的国家,添加的符号不一样
a.applyPattern("u00A4");
s = a.format(34);
System.err.println(s);
//------------------------------------------------
//-----------------------------------------------
//定义正负数模板,记得要用分号隔开
a.applyPattern("0.0;'@'-#.0");
s = a.format(33);
System.err.println(s);
s = a.format(-33);
System.err.println(s);
//-----------------------------------------------
//综合运用,正负数的不同前后缀
String pattern="'my moneny'###,###.##'RMB';'ur money'###,###.##'US'";
a.applyPattern(pattern);
System.out.println(a.format(1223233.456));