工具类-格式化小数

Posted chenglc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具类-格式化小数相关的知识,希望对你有一定的参考价值。

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;
    

 

以上是关于工具类-格式化小数的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript的常用工具方法大全持续更新中...

JavaScript的常用工具方法大全持续更新中...

工具类-java精确到小数点后6位

加减乘除工具类BigDecimalUtil

unity工具类篇 Decimal保留n位小数点,且不四舍五入

unity工具类篇 Decimal保留n位小数点,且不四舍五入