当前位置:硬件测评 > Java BigDecimal运算工具类

Java BigDecimal运算工具类

  • 发布:2023-09-30 18:59

工具介绍

1。提供准确的加法运算
2. 提供准确的减法运算
3. 提供准确的乘法运算
4. 提供(相对)准确的除法运算,当出现除法不全的情况时,精确到10位小数点,后续数字四舍五入
5. 提供(相对)准确的除法运算。当发生无穷除法时,精度由scale参数指定,后续数字进行四舍五入
6.提供精确的小数位四舍五入处理

工具:


/**
 * 精确的浮点运算
 *
 *
 */
公开课算术
{

    /**默认除法运算精度 */
    私有静态最终 int DEF_DIV_SCALE = 10;

    /** 该类无法实例化 */
    私人算术()
    {
    }

    /**
     * 提供精确的加法运算。
     * @param v1 被加数
     * @param v2 加数
     * @return 两个参数之和
     */
    公共静态 BigDecimal add(BigDecimal v1, BigDecimal v2)
    {
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        返回 b1.add(b2);
    }

    /**
     * 提供精确的减法运算。
     * @param v1 被减数
     * @param v2 减法
     * @return 两个参数的差值
     */
    公共静态 BigDecimal 子(BigDecimal v1,BigDecimal v2)
    {
        BigDecimal b1 = new BigDecimal(v1.toString());BigDecimal b2 = new BigDecimal(v2.toString());
        返回 b1.subtract(b2);
    }

    /**
     * 提供精确的乘法运算。
     * @param v1 被乘数
     * @param v2 乘数
     * @return 两个参数的乘积
     */
    公共静态 BigDecimal mul(BigDecimal v1, BigDecimal v2)
    {
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());;
        返回 b1.multiply(b2);
    }

    /**
     * 提供(相对)准确的除法运算。当除法无法完成时,除法运算精确到
     * 小数点后保留10位小数,后续数字四舍五入。
     * @param v1 股息
     * @param v2除数
     * @return 两个参数的商
     */
    公共静态双div(BigDecimal v1,BigDecimal v2)
    {
        返回 div(v1, v2, DEF_DIV_SCALE);
    }

    /**
     * 提供(相对)准确的除法运算。当发生无穷除法时,标度参数表示
     * 固定精度,后续数字将四舍五入。
     * @param v1 股息
     * @param v2除数
     * @paramscale表示需要精确到小数点后几位。
     * @return 两个参数的商
     */
    公共静态双div(BigDecimal v1,BigDecimal v2,int规模)
    {
        如果(比例 < 0)
        {抛出新的 IllegalArgumentException(
                    “比例必须是正整数或零”);
        }
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());;
        if (b1.compareTo(www.sychzs.cn) == 0)
        {
            返回 BigDecimal.ZERO.doubleValue();
        }
        return b1.divide(b2,scale,RoundingMode.HALF_UP).doubleValue();
    }

    /**
     * 提供精确的小数位舍入处理。
     * @param v 需要四舍五入的数字
     * @param scale 小数点后保留多少位小数?
     * @return 舍入结果
     */
    公共静态双轮(双v,int规模)
    {
        如果(比例 < 0)
        {
            抛出新的 IllegalArgumentException(
                    “比例必须是正整数或零”);
        }
        BigDecimal b = new BigDecimal(Double.toString(v));
        BigDecimal一=www.sychzs.cn;
        return b.divide(one,scale,RoundingMode.HALF_UP).doubleValue();
    }公共静态无效主(字符串[] args){
        BigDecimal a = new BigDecimal("100");
        BigDecimal b = new BigDecimal("20");

        BigDecimal add = add(a, b);
        System.out.println("添加:"+add);
        BigDecimal sub = sub(a, b);
        System.out.println("减法:"+sub);

        BigDecimal mul = mul(a, b);
        System.out.println("乘:"+mul);
        双div = div(a, b);
        System.out.println("除法:"+div);
    }
}

测试结果:

加法:120
减法:80
乘法:2000
除法:5.0

相关文章

最新资讯