java 精确运算工具类

import java.math.BigDecimal;

public class CalculationUtil {

    /**
     * 精确的加法运算
     *
     * @param value1 加数1
     * @param value2 加数2
     * @return
     */
    public static String add(String value1, String value2) {
        double a = 0;
        double b = 0;
        try {
            a = Double.parseDouble(value1);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        try {
            b = Double.parseDouble(value2);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        return add(a, b);

    }

    public static String add(double value1, double value2) {
        return (BigDecimal.valueOf(value1).add(BigDecimal.valueOf(value2))).toString();
    }

    /**
     * 精确的减法运算
     *
     * @param value1 被减数
     * @param value2 减数
     * @return
     */
    public static String subtract(String value1, String value2) {
        double a = 0;
        double b = 0;
        try {
            a = Double.parseDouble(value1);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        try {
            b = Double.parseDouble(value2);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        return subtract(a, b);
    }

    public static String subtract(double value1, double value2) {
        return BigDecimal.valueOf(value1).subtract(BigDecimal.valueOf(value2)).toString();
    }

    /**
     * 精确的乘法运算
     *
     * @param value1 乘数
     * @param value2 乘数
     * @return
     */
    public static String multiply(String value1, String value2) {
        double a = 0;
        double b = 0;
        try {
            a = Double.parseDouble(value1);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        try {
            b = Double.parseDouble(value2);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        return multiply(a, b);
    }

    public static String multiply(double value1, double value2) {
        return BigDecimal.valueOf(value1).multiply(BigDecimal.valueOf(value2)).toString();
    }

    /**
     * 精确的除法运算
     *
     * @param value1 被除数
     * @param value2 除数
     * @param scale  精确到小数点后几位数
     * @param mode   精确模式
     * @return
     */
    public static String divide(String value1, String value2, int scale, int mode) {
        double a = 0;
        double b = 0;
        try {
            a = Double.parseDouble(value1);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        try {
            b = Double.parseDouble(value2);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        return divide(a, b, scale, mode);
    }

    //四舍五入模式
    public static String divide(String value1, String value2, int scale) {
        return divide(value1, value2, scale, BigDecimal.ROUND_HALF_UP);
    }

    public static String divide(double value1, double value2, int scale, int mode) {
//       return divide(Double.toString(value1),Double.toString(value2),scale,mode);
        return BigDecimal.valueOf(value1).divide(BigDecimal.valueOf(value2), scale, mode).toString();
    }

    //四舍五入模式
    public static String divide(double value1, double value2, int scale) {
        return divide(value1, value2, scale, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 测量(精确取舍)
     *
     * @param value 需要取舍的小数
     * @param scale 小数点后几位
     * @param mode  取舍模式
     * @return
     */

    public static String setScale(double value, int scale, int mode) {
        return BigDecimal.valueOf(value).setScale(scale, mode).toString();
    }

    public static String setScale(String value, int scale, int mode) {
        double v = 0;
        try {
            v = Double.parseDouble(value);
        } catch (NumberFormatException | NullPointerException ignored) {
        }
        return setScale(v, scale, mode);
    }

    /**
     * 测量(精确取舍) 四舍五入模式
     *
     * @param value 需要取舍的小数
     * @param scale 小数点后几位
     * @return
     */
    public static String setScale(double value, int scale) {
        return setScale(value, scale, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 测量(精确取舍) 四舍五入模式
     *
     * @param value 需要取舍的小数
     * @param scale 小数点后几位
     * @return
     */
    public static String setScale(String value, int scale) {
        return setScale(value, scale, BigDecimal.ROUND_HALF_UP);
    }

}

 

/** * @project: WebProjectUtil * @class: NumberUtil * @describe: 此工具类用来处理数字方面的逻辑, * 如返回指定位数的随机数字、Double的加减乘除精确运算、指定位数数字用“0”补齐 * @autho: Administrator * @date: 2013-6-7 下午02:26:27 * @alter: Administrator * @alterDate: 2013-6-7 下午02:26:27 * @alterRemark: * @version V1.0 */ public class NumberUtil { private static final int DEF_DIV_SCALE = 2; /** * @return 返回12位随机数 */ public static String randomNumber() { } /** * @param parm * @return 返回指定位数随机数 */ public static String randomNumber(int parm) { } /** * * 两个Double数相加 * * @param v1 * @param v2 * @return Double */ public static Double add(Double v1, Double v2) { } /** * * 两个Double数相减 * * @param v1 * @param v2 * @return Double */ public static Double sub(Double v1, Double v2) { } /** * * 两个Double数相乘 * * @param v1 * @param v2 * @return Double */ public static Double mul(Double v1, Double v2) { } /** * * 两个Double数相除 * * @param v1 * @param v2 * @return Double */ public static Double div(Double v1, Double v2) { } /** * * 两个Double数相除,并保留scale位小数 * * @param v1 * @param v2 * @param scale * @return Double */ public static Double div(Double v1, Double v2, int scale) { } /** * 返回指定Double的负数 * @param v1 * @return */ public static Double neg(Double v1) { /** * @Title: toFixdLengthString * @Description: 将字符串用符号填充位数 * @param str 源字符串 * @param fixdlenth 位数 * @return String * @throws */ public static String toFixdLengthString(String str, int fixdlenth) { } /** * @Title: toFixdLengthString * @Description: 将数字用“0”填充位数 * @param num * @param fixdlenth * @return String * @throws */ public static String toFixdLengthString(int num, int fixdlenth) { } /** * @Title: generateSpaceString * @Description: 得到指定位数占位符 * @param length * @return String * @throws */ public static String generateSpaceString(int length) { } /** * @Title: generateZeroString * @Description: 得到指定位数的“0”的占位符 * @param length * @return String * @throws */ public static String generateZeroString(int length) { } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值