查看原文:http://www.ibloger.net/article/50.html
DecimalFormat 是NumberFormat 类的子类,主要的作用是用来格式化数字使用,当然,在格式化数字的时候要比直接使用NumberFormat 更加方便,因为可以直接指定按用户自定义方式进行格式化操作,与之前讲的SimpleDateFormat类似,如果要想进行自定义格式化操作,则必须指定格式化操作的模板。
因为是子类,NumberFormat的很多方法都是可以继承过来直接使用的,比如设置国际化,比如下面设置位数,等等等等
// setMaximumFractionDigits(int) 设置数值的小数部分允许的最大位数。
// setMaximumIntegerDigits(int) 设置数值的整数部分允许的最大位数。
// setMinimumFractionDigits(int) 设置数值的小数部分允许的最小位数。
// setMinimumIntegerDigits(int) 设置数值的整数部分允许的最小位数.
注意格式化时候,会进行四舍五入规则
package com.chinatelecom.web.trade.controller.pay;
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%