Java 常用工具類(29) : 保留小數


import com.aliyun.et.industry.pangang.common.consts.Constants;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;

/**
 * @Auther: liyue
 * @Date: 2019/8/23 17:01
 * @Description:
 */
public class DoubleUtil {


    /**
     * String轉double,爲空返回0
     *
     * @param str
     * @return
     */
    public static Double parseDouble(String str) {
        if (str == null || str.equals(Constants.ZERO) || StringUtils.isBlank(str)) {
            return 0.0;
        }
        return Double.parseDouble(str);
    }

    /**
     * String轉double,爲空返回null
     *
     * @param str
     * @return
     */
    public static Double parseDoubleNull(String str) {
        if (str == null || str.equals(Constants.ZERO) || StringUtils.isBlank(str)) {
            return null;
        }
        return Double.parseDouble(str);
    }

    /**
     * 保留小數,四捨五入
     *
     * @param data
     * @param amount
     * @return
     */
    public static Double round(Double data, int amount) {
        if (data == null)
            return null;
        //利用BigDecimal來實現四捨五入.保留一位小數
        double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
        //1代表保留1位小數,保留兩位小數就是2,依此累推
        //BigDecimal.ROUND_HALF_UP 代表使用四捨五入的方式
        return result;
    }


    /**
     * 保留小數,四捨五入
     *
     * @param data
     * @param amount
     * @return
     */
    public static Double round(String data, int amount) {
        if (data == null)
            return null;
        //利用BigDecimal來實現四捨五入.保留一位小數
        double result = new BigDecimal(data).setScale(amount, BigDecimal.ROUND_HALF_UP).doubleValue();
        //1代表保留1位小數,保留兩位小數就是2,依此累推
        //BigDecimal.ROUND_HALF_UP 代表使用四捨五入的方式
        return result;
    }


    /**
     * double四捨五入不保留小數轉爲long
     *
     * @param data Double
     * @return
     */
    public static Long roundToLong(Double data) {
        if (data == null)
            return null;
        String str = round(data, 0) + "";
        return Long.parseLong(str.split("\\.")[0]);
    }

    /**
     * double四捨五入不保留小數轉爲long
     *
     * @param data String
     * @return
     */
    public static Long roundToLong(String data) {
        if (data == null)
            return null;
        String str = round(data, 0) + "";
        return Long.parseLong(str.split("\\.")[0]);
    }

    /**
     * 計算百分比,返回結果不帶百分符號
     *
     * @param dividend Double
     * @param divisor  Double
     * @return
     */
    public static Double ratio(Double dividend, Double divisor) {
        if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
            return null;
        return round(dividend / divisor * 100, 2);
    }

    /**
     * 計算百分比,返回結果不帶百分符號
     *
     * @param dividend Integer
     * @param divisor  Integer
     * @return
     */
    public static Double ratio(Integer dividend, Integer divisor) {
        if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
            return null;
        return round(dividend * 1.0 / divisor * 100, 2);
    }


    /**
     * 計算百分比,返回結果帶百分符號
     *
     * @param dividend
     * @param divisor
     * @return
     */
    public static String ratios(Double dividend, Double divisor) {
        if (dividend == null || divisor == null || dividend == 0 || divisor == 0)
            return null;
        return round(dividend / divisor * 100, 2) + "%";
    }


    public static void main(String[] args) {
        System.err.println(ratio(721, 900));

    }


}

 

 

END。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章