DecimalFormat数字格式化

DecimalFormat可以按照需要格式化数字,下面简单介绍一下几种使用。其中自己也踏踏实实踩了坑,谨此记录。

保留位数设置
public class DecimalUtils {
 
    //保留2位,不足补0
    private static final DecimalFormat df_fill_zero = new DecimalFormat("00.00");
    //保留2位,不足保留原位数
    private static final DecimalFormat df_fill_null = new DecimalFormat("##.##");


    public static void main (String args[]) {
        System.out.println(df_fill_zero.format(1.2)); //01.20  不足2位补0
        System.out.println(df_fill_null.format(1.2)); //1.2   不足2位保留原数位

        System.out.println(df_fill_zero.format(1.224)); //01.22 超出2位截断(舍入模式后面再说)
        System.out.println(df_fill_null.format(1.224)); //1.22 超出2位截断(舍入模式后面再说)

        System.out.println(df_fill_zero.format(123.22)); //123.22
        System.out.println(df_fill_null.format(123.22)); //123.22
    }
}

 

运行结果:

01.20
1.2
01.22
1.22
123.22
123.22

 

舍入模式

默认舍入模式

public class FormatDefault {
  //保留3位,不足保留原位数
    private static final DecimalFormat df_t = new DecimalFormat("#.###");


    public static void main (String args[]) {
        //默认舍入模式(RoundingMode.HALF_EVEN)
        System.out.println(df_t.format(1234.2224)); //1234.222
        System.out.println(df_t.format(1234.2226)); //1234.223

        System.out.println(df_t.format(1234.2225)); //1234.223  最后一位偶数,舍入
        System.out.println(df_t.format(1234.2235)); //1234.223  最后一位奇数,舍去
    }
}

 

四舍五入模式

public class FormatHalfUp {

    /***
     * 最多保存3位小数,如果number少于3位则保留原小数位数,如果多于3位则四舍五入保留3位小数
     */
    public static String formatHalfUp(double number) {
        DecimalFormat df = new DecimalFormat("#.###");
        df.setRoundingMode(RoundingMode.HALF_UP);
        return df.format(BigDecimal.valueOf(number)); //防止精度丢失,数字类型用BigDecimal
    }

    public static void main (String args[]) {
        //四舍五入舍入模式(RoundingMode.HALF_UP)
        System.out.println(formatHalfUp(1234.2224)); //1234.222
        System.out.println(formatHalfUp(1234.2226)); //1234.223

        System.out.println(formatHalfUp(1234.2225)); //1234.223
        System.out.println(formatHalfUp(1234.2235)); //1234.224
    }
} 

 

 




posted @ 2018-07-31 21:22  selicoco  阅读(2419)  评论(0编辑  收藏  举报