DecimalFormat是 NumberFormat 的一个具体子类,用于格式化十进制数字。DecimalFormat 包含一个模式和一组符号 ,在做数字格式化时,DecimalFormat还是比较方便的。常用于保留小数点后几位、数字间用,分割、四舍五入等场合。
关键符号:
0:只要有可能就把数字拉上这个位置,不包括 0
.:小数的分隔符的占位符
- :缺省负数前缀。
,:分组分隔符的占位符 (只能放在整数部分)
%:乘以 100 和作为百分比显示,等~~
截取整数部分:
DecimalFormatdf = new DecimalFormat("0");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------截取整数部分:----------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
//四舍五入(截取整数):比四小的都舍去,比四大的都进一
System.out.println(("----------还可以四舍五入:----------"));
System.out.println((df.format(785.695)));
System.out.println((df.format(456.70)));
System.out.println((df.format(0.542)));
结果如下:
截取整数部分以及小数点后一位(小数部分为0时,不显示小数):
DecimalFormatdf = new DecimalFormat("#.#");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("--------截取整数部分以及小数点后一位:--------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
结果如下:
以负数形式显示:
DecimalFormatdf = new DecimalFormat("-#.#");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------以负数形式显示:----------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
结果如下:
(#字符)选择整数部分,以字符串千克结尾:
DecimalFormatdf = new DecimalFormat("#千克");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("--------选择整数部分,以字符串千克结尾--------"));
System.out.println((df.format(785.395)));
结果如下:
(,#)整数部分每3位用,分隔:
DecimalFormatdf = new DecimalFormat(",###");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------整数部分每3位用,分隔----------"));
System.out.println((df.format(785210.395)));
结果如下:
以百分比显示, 并保留小数点后二位:
doubleg=Double.valueOf((list.get(i).getSignaMoney()));
doublef=Double.valueOf((list.get(i).getYiqi()));
doublesum=g/f;
DecimalFormatdf=new DecimalFormat("##.##%");
Stringst=df.format(sum);
list.get(i).setQianyueBiLi((st));
结果如下(签约比例):
关键符号:
0:只要有可能就把数字拉上这个位置,不包括 0
.:小数的分隔符的占位符
- :缺省负数前缀。
,:分组分隔符的占位符 (只能放在整数部分)
%:乘以 100 和作为百分比显示,等~~
截取整数部分:
DecimalFormatdf = new DecimalFormat("0");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------截取整数部分:----------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
//四舍五入(截取整数):比四小的都舍去,比四大的都进一
System.out.println(("----------还可以四舍五入:----------"));
System.out.println((df.format(785.695)));
System.out.println((df.format(456.70)));
System.out.println((df.format(0.542)));
结果如下:
截取整数部分以及小数点后一位(小数部分为0时,不显示小数):
DecimalFormatdf = new DecimalFormat("#.#");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("--------截取整数部分以及小数点后一位:--------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
结果如下:
以负数形式显示:
DecimalFormatdf = new DecimalFormat("-#.#");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------以负数形式显示:----------"));
System.out.println((df.format(785.395)));
System.out.println((df.format(456.00)));
System.out.println((df.format(0.342)));
结果如下:
(#字符)选择整数部分,以字符串千克结尾:
DecimalFormatdf = new DecimalFormat("#千克");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("--------选择整数部分,以字符串千克结尾--------"));
System.out.println((df.format(785.395)));
结果如下:
(,#)整数部分每3位用,分隔:
DecimalFormatdf = new DecimalFormat(",###");
df.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(("----------整数部分每3位用,分隔----------"));
System.out.println((df.format(785210.395)));
结果如下:
以百分比显示, 并保留小数点后二位:
doubleg=Double.valueOf((list.get(i).getSignaMoney()));
doublef=Double.valueOf((list.get(i).getYiqi()));
doublesum=g/f;
DecimalFormatdf=new DecimalFormat("##.##%");
Stringst=df.format(sum);
list.get(i).setQianyueBiLi((st));
结果如下(签约比例):