金额计算工具类

package com.shishike.calm.baseutils.utils;

import com.shishike.calm.baseutils.data.Constants;

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

/**
 * Created by wzm on 2017/7/26.
 */

public class AmountUtil {
    /***
     * 保留2位小数
     * 四舍五入
     * @param
     *
     * @return
     * 返回一个double类型的2位小数
     */
    public static Double get2Double(Double doubleVal) {
        if (null == doubleVal) {
            doubleVal = new Double(0);
        }
        return new BigDecimal(doubleVal).setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /***
     * 格式化Double类型并保留scale位小数
     * 四舍五入
     * @param doubleVal
     * @return
     */
    public static String formatBy2Scale(Double doubleVal) {
        if (null == doubleVal) {
            doubleVal = new Double(0);
        }
        StringBuffer sbStr = new StringBuffer("0.");
        for (int i = 0; i < Constants.DIGIT; i++) {
            sbStr.append("0");
        }
        DecimalFormat myformat = new DecimalFormat(sbStr.toString());
        return myformat.format(doubleVal);
    }

    /***
     * Double类型相加 +
* ROUND_HALF_UP 四舍五入
* @param val1 * * @param val2 * * @return */ public static Double add(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2) { val2 = new Double(0); } return new BigDecimal(Double.toString(val1)).add(new BigDecimal(Double.toString(val2))). setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue(); } /*** * Double类型相减
* ROUND_HALF_UP 四舍五入
* @param val1 * * @param val2 * * @return */ public static Double subtract(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2) { val2 = new Double(0); } return new BigDecimal(Double.toString(val1)).subtract(new BigDecimal(Double.toString(val2))). setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue(); } /*** * Double类型相乘 *
* ROUND_HALF_UP 四舍五入
* @param val1 * * @param val2 * * @return */ public static Double multiply(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2) { val2 = new Double(0); } return new BigDecimal(Double.toString(val1)).multiply(new BigDecimal(Double.toString(val2))). setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue(); } /*** * Double类型相除 /
* ROUND_HALF_UP 四舍五入
* @param val1 * * @param val2 * * @return */ public static Double divide(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2 || val2 == 0) { val2 = new Double(1); } return new BigDecimal(Double.toString(val1)).divide(new BigDecimal(Double.toString(val2))). setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue(); } /*** * Double类型取余 %
* ROUND_HALF_UP 四舍五入
* @param val1 * * @param val2 * * @return */ public static Double divideAndRemainder(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2 || val2 == 0) { val2 = new Double(1); } return new BigDecimal(Double.toString(val1)).divideAndRemainder(new BigDecimal(Double.toString(val2)))[1]. setScale(Constants.DIGIT, BigDecimal.ROUND_HALF_UP).doubleValue(); } /*** * 格式化Double类型数据 * * @param val * @param fmt * NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用 * NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用 * @param maximumFractionDigits * 如果是百分比 设置小数位数(四舍五入) * @return */ public static String formatByNumberFormat(Double val, NumberFormat fmt, int maximumFractionDigits) { if (fmt.equals(NumberFormat.getPercentInstance())) { fmt.setMaximumFractionDigits(maximumFractionDigits); //百分比小数点最多3位 } return fmt.format(val); } /*** * 比较大小 * -1、0、1,即左边比右边数大,返回1,相等返回0,比右边小返回-1。 * @return */ public static int compareTo(Double val1, Double val2) { if (null == val1) { val1 = new Double(0); } if (null == val2) { val2 = new Double(0); } return new BigDecimal(val1).compareTo(new BigDecimal(val2)); } }

你可能感兴趣的:(金额计算工具类)