DecimalFormat 是NumberFormat 类的子类,主要的作用是用来格式化数字使用,当然,在格式化数字的时候要比直接使用NumberFormat 更加方便,因为可以直接指定按用户自定义方式进行格式化操作,与之前讲的SimpleDateFormat类似,如果要想进行自定义格式化操作,则必须指定格式化操作的模板。
因为是子类,NumberFormat的很多方法都是可以继承过来直接使用的,比如设置国际化,比如下面设置位数,等等等等
// setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。 // setMaximumIntegerDigits(int) 设置数值的整数部分允许的最大位数。 // setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。 // setMinimumIntegerDigits(int) 设置数值的整数部分允许的最小位数.
注意格式化时候,会进行四舍五入规则
import java.text.DecimalFormat; public class Main { /** 此方法专门用于完成数字的格式化显示 **/ public static void decimalFormat(String pattern,double value){ DecimalFormat df = new DecimalFormat(pattern) ; // 实例化对象,传入格式化模板 String str = df.format(value) ; // 格式化数字 System.out.println("使用 " + pattern + " 格式化数字, " + value + ":" + str) ; } public static void main(String[] args) { decimalFormat("###,###.###", 111222.34567); // 111,222.346 decimalFormat("000,000.000", 11222.34567); // 011,222.346 decimalFormat("###,###.###¥", 111222.34567); // 111,222.346¥ decimalFormat("000,000.000¥", 11222.34567); // 011,222.346¥ decimalFormat("##.###%", 0.345678); // 34.568% decimalFormat("00.###%", 0.0345678); // 03.457% decimalFormat("###.###\u2030", 0.345678); // 345.678‰ decimalFormat("-###.##", 0.3439); // -0.34 } }
补充:0.00、0.01; 0.00%、0.12%这样的数据,如果按照上面的格式可能会造成数据显示成:.00、.01; .00%、.12%,怎么办呢?只要把格式改成:
DecimalFormat df1 = new DecimalFormat("0.00"); DecimalFormat df2 = new DecimalFormat("0.00%"); df1.formatI(number);df2.formatI(number);
显示:0.00、0.01; 0.00%、0.12%