工具类-格式化小数

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * ClassName: NumUtil<br/>
 * Description: <br/>
 * date: 2018/8/31 下午4:18<br/>
 *
 * @author chengluchao
 * @since JDK 1.8
 */

public abstract class NumUtil {
    static final String FORMAT2STR = "0.00";
    static final String FORMAT8STR = "0.00000000";
    static final DecimalFormat df2 = new DecimalFormat(FORMAT2STR);
    static final DecimalFormat df8 = new DecimalFormat(FORMAT8STR);


    /**
     * 格式化小数
     *
     * @param num
     * @return
     */
    public static BigDecimal parseDouble(String num) {
        if (StrUtils.isEmpty(num))
            return new BigDecimal(0.0);
        return new BigDecimal(num);
    }

    /**
     * 格式化小数,可以为空
     *
     * @param num
     * @return
     */
    public static BigDecimal parseDoubleHaveNull(String num) {
        if (StrUtils.isEmpty(num))
            return null;
        return new BigDecimal(num);
    }

    /**
     * 格式化小数-double
     *
     * @param num
     * @return
     */
    public static double parseDoubleTrue(String num) {
        if (StrUtils.isEmpty(num))
            return 0.0;
        return Double.parseDouble(num);
    }

    /**
     * 转小数,保留2位
     *
     * @param num
     * @return
     */
    public static BigDecimal StrTo2Double(String num) {
        if (StrUtils.isEmpty(num))
            num = FORMAT2STR;
        return new BigDecimal(num).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 转小数,保留3位
     *
     * @param num
     * @return
     */
    public static BigDecimal StrTo3Double(String num) {
        if (StrUtils.isEmpty(num))
            num = "0.000";
        return new BigDecimal(num).setScale(3, java.math.BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 转小数,保留8位
     *
     * @param num
     * @return
     */
    public static BigDecimal StrTo8Double(String num) {
        if (StrUtils.isEmpty(num))
            num = FORMAT8STR;
        return new BigDecimal(num).setScale(8, java.math.BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 格式化数字
     *
     * @param num
     * @return
     */
    public static int parseInt(String num) {
        if (StrUtils.isEmpty(num))
            return 0;
        return Integer.parseInt(num);
    }

    /**
     * 格式化8位小数
     *
     * @param num
     * @return
     */
    @Deprecated
    public static String format8(Double num) {
        if (num == null)
            num = 0.00000000;
        return df8.format(num);
    }

    /**
     * 格式化8位小数
     *
     * @param num
     * @return
     */
    @Deprecated
    public static String format8Double(String num) {
        if (num == null)
            return FORMAT8STR;
        return df8.format(Double.parseDouble(num));
    }

    /**
     * 格式化8位小数
     *
     * @param num
     * @return
     */
    public static String format8(String num) {
        if (StrUtils.isEmpty(num))
            return FORMAT8STR;
        BigDecimal bigDecimal = new BigDecimal(num);
       /* if ((0 > bigDecimal.compareTo(new BigDecimal("1"))) && (0 < bigDecimal.compareTo(new BigDecimal("-1")))){
            return format8Double(num);
        } else {
            return format8(bigDecimal);
        }*/
        return format8(bigDecimal);
    }

    /**
     * 格式化2位小数
     *
     * @param num
     * @return
     */
    public static String format2(String num) {
        if (StrUtils.isEmpty(num))
            num = FORMAT2STR;
        return format2(new BigDecimal(num));
    }

    /**
     * 格式化2位小数
     *
     * @param num
     * @return
     */
    @Deprecated
    public static String format2(Double num) {
        if (num == null || num == 0.0)
            num = 0.00;
        if (num == 0.015)
            num = 0.02;
        return df2.format(num);
    }

    /**
     * 格式化2位小数
     *
     * @param num
     * @return
     */
    public static String format2(BigDecimal num) {
        if (num == null)
            return FORMAT2STR;
        return num.setScale(2, java.math.BigDecimal.ROUND_HALF_UP).toPlainString();
    }


    /**
     * 格式化2位小数
     *
     * @param num
     * @return
     */
    public static BigDecimal format2BigDecimal(BigDecimal num) {
        if (num == null)
            return new BigDecimal("0.00");
        return num.setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 格式化8位小数
     *
     * @param num
     * @return
     */
    public static String format8(BigDecimal num) {
        if (num == null)
            return FORMAT8STR;
        return num.setScale(8, java.math.BigDecimal.ROUND_HALF_UP).toPlainString();
    }

    /**
     * 是否比0大
     * num > 0
     *
     * @return
     */
    public static boolean biggerThan0(BigDecimal num) {
        if (num == null)
            return false;
        if (0 < num.compareTo(new BigDecimal(0)))
            return true;
        return false;
    }

    /**
     * 参数是否为null,为null时直接返回。部位null时做绝对值
     *
     * @param val
     * @return
     * @author wuqingyu
     */
    public static BigDecimal bigDecimalIsNull(BigDecimal val) {
        if (val != null) {
            val = val.abs();
        } else {
            val = null;
        }
        return val;
    }

}
原文地址:https://www.cnblogs.com/chenglc/p/11077568.html