一、java.text.NumberFormat
1、public abstract class NumberFormat extends Format
2、如果格式化多个数值,较为高效的做法是:获取该格式并多次使用它。这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了
long[] longNum = {20, 99};
NumberFormat numberFormat = NumberFormat.getInstance();
for (int i = 0; i < longNum.length; ++i) {
System.out.println(numberFormat.format(longNum[i]) + "; ");
}
3、常用方法
double myNumber = 23323.3325632323;
double test = 0.3464;
//getInstance():返回当前默认语言环境的通用数值格式(四舍五入,最多保留3位小数,也可以是整数)
String myString = NumberFormat.getInstance().format(myNumber);
System.out.println(myString); //23,323.333
//getCurrencyInstance():返回当前默认语言环境的货币格式(四舍五入,必须全都保留2位小数)
myString = NumberFormat.getCurrencyInstance().format(myNumber);
System.out.println(myString); //¥23,323.33
//getNumberInstance():返回当前默认语言环境的通用数值格式(四舍五入,最多保留3位小数,也可以是整数)
myString = NumberFormat.getNumberInstance().format(myNumber);
System.out.println(myString); //23,323.333
//getPercentInstance():返回当前缺省语言环境的百分比格式(四舍五入,百分数必须是整数)
myString = NumberFormat.getPercentInstance().format(test);
System.out.println(myString); //35%
//返回当前默认语言环境的通用数值格式
NumberFormat format = NumberFormat.getInstance();
//setMaximumFractionDigits(int):设置数值的小数部分允许的最大位数。
format.setMaximumFractionDigits(5);
//setMinimumFractionDigits(int):设置数值的小数部分允许的最小位数。
format.setMinimumFractionDigits(3);
//setMaximumIntegerDigits(int):设置数值的整数部分允许的最大位数。
format.setMaximumIntegerDigits(10);
//setMinimumIntegerDigits(int):设置数值的整数部分允许的最小位数.
format.setMinimumIntegerDigits(1);
System.out.println(format.format(0.2321232)); //0.23212
System.out.println(format.format(0.22)); //0.220
二、java.text.DecimalFormat
1、DecimalFormat是NumberFormat的子类,用于格式化十进制数字
2、pattern中某些字符的含义:
String pattern = "xxx";
DecimalFormat df = new DecimalFormat(pattern);
(1)0:一位数字,这一位缺失显示为0,即用来补零
(2)#:一位数字,这一位缺失就不显示
(3). :小数点
(4), :千位分隔符(分组分隔符的占位符)
(5)- :缺省负数前缀
(6)%:百分比,乘以100或作为百分比显示
3、常用方法
疑问:下面代码中,部分四舍五入是逢6进1,不是逢5进1,为什么???
DecimalFormat df1 = new DecimalFormat("####.000");
System.out.println(df1.format(12345.56)); //12345.560
//##.00%:百分比格式,后面不足2位的用0补齐
DecimalFormat df2 = new DecimalFormat("##.00%");
System.out.println(df2.format(1.47658)); //147.66%
DecimalFormat df3 = new DecimalFormat("###,###.00");
System.out.println(df3.format(24.7)); //24.70
System.out.println(df3.format(23123.479)); //23,123.48
System.out.println(df3.format(0.00)); //.00
DecimalFormat df4 = new DecimalFormat("#.00");
System.out.println(df4.format(0.00)); //.00
DecimalFormat df5 = new DecimalFormat("###,##0.00");
System.out.println(df5.format(0.00)); //0.00
DecimalFormat df6 = new DecimalFormat("#.##");
System.out.println(df6.format(.00)); //0
System.out.println(df6.format(0.00)); //0
System.out.println(df6.format(.12)); //0.12
System.out.println(df6.format(0.12)); //0.12
DecimalFormat df7 = new DecimalFormat(".##");
System.out.println(df7.format(.00)); //.0
System.out.println(df7.format(0.00)); //.0
System.out.println(df7.format(.12)); //.12
System.out.println(df7.format(0.12)); //.12