MathUtils浮点数的加减乘除工具类

package cn.com.prac.util;

import java.math.BigDecimal;

/** 
*  浮点数操作,加减乘除,保证浮点数精度不缺失
*/
public class MathUtils {

    // 默认除法运算精度
    private static final int DEF_DIV_SCALE = 10;

    /**
     * 提供精确的加法运算
     * 
     * @param v1
     * @param v2
     * @return double
     */
    public static double add(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }

    /**
     * 提供精确的减法运算
     * @param v1 :减数
     * @param v2 :被减数
     * @return double
     */
    public static double reduce(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 提供精确的乘法运算
     * @param v1 
     * @param v2
     * @return double
     */
    public static double mul(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.multiply(b2).doubleValue();
    }

    /** 
    *  提供精确的除法运算(默认精度为精确到小数点后10位)
    * @param v1 :除数
    * @param v2 :被除数
    * @return double     
    */
    public static double div(double v1, double v2) {
        return div(v1, v2, DEF_DIV_SCALE);
    }

    /** 
    *  提供精确的除法运算
    * @param v1    :除数
    * @param v2 :被除数
    * @param scale :精度
    * @return double     
    */
    public static double div(double v1, double v2, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException(
                    "The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /** 
    *  提供精确的四舍五入运算
    * @param v :浮点数
    * @param scale :精度
    * @return double     
    */
    public static double round(double v, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b = new BigDecimal(Double.toString(v));
        BigDecimal one = new BigDecimal("1");
        return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
    
}

 

转载于:https://www.cnblogs.com/-scl/p/7845090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 是一种高级编程语言,具有广泛的应用领域。在 Java 开发中,使用工具类可以提高开发效率、减少代码冗余,同时也可以提供一些常用的功能模块供开发者使用。下面列举几个常用的 Java 工具类: 1. StringUtils:这是 Apache Commons Lang 提供的工具类,主要用于字符串的操作和处理。它包含了很多方便的方法,如字符串的判空、拼接、截取、替换等,能够极大地简化字符串操作的代码。 2. FileUtil:这是一个用于文件操作的工具类,它封装了一些常用的文件处理方法,如文件的复制、移动、删除,以及读取文件内容、写入文件等操作。使用该工具类可以简化文件操作的代码,提高开发效率。 3. DateUtils:日期操作是 Java 开发中经常用到的功能之一。DateUtils 是 Apache Commons Lang 提供的工具类,可以方便地进行日期的格式化、解析、计算和比较等操作。使用该工具类可以减少日期操作的代码量,同时也能保证日期处理的准确性。 4. CollectionUtils:这是 Apache Commons Collections 提供的工具类,用于对集合类进行操作。它提供了很多方法,如集合的交集、并集、差集,以及集合的查找、筛选、排序等操作。使用 CollectionUtils 可以简化集合操作的代码,提高开发效率。 5. MathUtils:数学计算在一些复杂的项目中是不可避免的。MathUtils 是 Apache Commons Math 提供的工具类,它包含了很多数学计算的方法,如常见数学函数的计算、矩阵运算、随机数生成等。使用该工具类可以简化数学计算的代码,提高开发效率。 以上所列的工具类只是 Java 开发中常用的一部分,根据具体的项目需求,还可以使用其他工具类来简化开发工作。总之,合理使用工具类可以提高代码的可读性、减少冗余,并提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值