首页 > 其他分享 >double型数据加减乘除工具类

double型数据加减乘除工具类

时间:2023-10-30 11:35:53浏览次数:24  
标签:return BigDecimal double param v1 v2 Double 工具 加减乘除

public class DoubleUtil {

    /**
     * 很小的数值 用于double和0比较 存在尾差问题
     ***/
    private static final Double minVal = 0.00001;

    /**
     * 两个Double数相加
     *
     * @param v1
     * @param v2
     * @return
     */
    public static Double add(Double v1, Double v2) {
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.add(b2).doubleValue();
    }

    /**
     * 两个Double数相减
     *
     * @param v1
     * @param v2
     * @return
     */
    public static Double sub(Double v1, Double v2) {
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 两个Double数相乘
     *
     * @param v1
     * @param v2
     * @return
     */
    public static Double mul(Double v1, Double v2) {
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.multiply(b2).doubleValue();
    }

    /**
     * 两个Double数相乘,scale 小数位, 默认四舍五入的方式取整
     *
     * @param v1
     * @param v2
     * @return
     */
    public static Double mul(Double v1, Double v2, int scale) {
        if (v2 == 0) {
            return 0d;
        }
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.multiply(b2).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 两个Double数相乘, scale 小数位
     *
     * @param v1
     * @param v2
     * @return
     */
    public static Double mul(Double v1, Double v2, int scale, int roundingMode) {
        if (v2 == 0) {
            return 0d;
        }
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.multiply(b2).setScale(scale, roundingMode).doubleValue();
    }

    /**
     * 两个Double数相除,并保留scale位小数,默认四舍五入的方式
     *
     * @param v1    除数
     * @param v2    被除数
     * @param scale
     * @return
     */
    public static Double div(Double v1, Double v2, int scale) {
        if (v2 == 0 || Math.abs(v2) < minVal) {
            return 0.0d;
        }
        return div(v1, v2, scale, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 两个Double数相除,保留scale位小数,并且指定取舍类型
     *
     * @param v1           除数
     * @param v2           被除数
     * @param scale
     * @param roundingMode BigDecimal.ROUND_HALF_UP,
     *                     BigDecimal.ROUND_UP,BigDecimal.ROUND_DOWN...
     * @return
     */
    public static Double div(Double v1, Double v2, int scale, int roundingMode) {
        if (scale < 0) {
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        if (v2 == 0 || Math.abs(v2) < minVal) {
            return 0.0d;
        }
        BigDecimal b1 = new BigDecimal(v1.toString());
        BigDecimal b2 = new BigDecimal(v2.toString());
        return b1.divide(b2, scale, roundingMode).doubleValue();
    }

}

 

标签:return,BigDecimal,double,param,v1,v2,Double,工具,加减乘除
From: https://www.cnblogs.com/junjun1578/p/17797381.html

相关文章

  • HExcel,一个简单通用的导入导出Excel工具类
    前言日常开发中,Excel的导出、导入可以说是最常见的功能模块之一,一个通用的、健壮的的工具类可以节省大量开发时间,让我们把更多精力放在业务处理上中之前我们也写了一个Excel的简单导出,甚至可以不依赖poi,还扩展了纯前端导出Excel!详情请戳:《POI导出Excel 》,遗憾的是......
  • xpath-工具
    xpath1、xpath安装与使用安装安装lxml库pipinstalllxml-ipip源2、解析流程与使用解析流程实例化一个etree的对象,把即将被解析的页面源码加载到该对象调用该对象的xpath方法结合着不同形式的xpath表达进行标签定位和数据提取使用导入lxml.etreefromlxmlim......
  • 分享个自己写的小程序解包工具
    闲聊前几天在吾爱破解上看到一个小程序逆向的帖子:windows下通杀wx小程序云函数实战,想着自己也学习一下怎么逆向小程序,一搜unveilr仓库没了,看评论好像开始收费了。我就用aardio写了一个解密和解包工具,这里免费分享给大家工具下载地址https://wwzy.lanzoub.com/b068akh6d密......
  • 关于使用ChatGPT的API开发批量处理工具的总结
    关于使用ChatGPT的API开发批量处理工具的总结由于批量处理,输入和输出最好使用json格式,并在提示词中要求以相同格式返回;以便于工具的解析和处理;返回的结果中要求chatgpt,说明其详细的处理过程及原因,方便对提示词进行调优,否则,面对问题时,只能瞎猜;提示词中尽量说明什么情况要怎么做......
  • 这款图片处理工具,官方免费啦!
    今晚跟朋友聊到一款海外的神器,现在官方宣布完全免费。所以也来跟大家分享一下这款神仙工具。不要看它名字普普通通,实际上内蕴乾坤!接下来看我给大家炫一下,相信你会被惊艳到!PS:仅限于个人与教育用途,切勿商用噢!FastStonePhotoResizer,这是一款图片批量处理工具,功能相当强大,具备很多你......
  • Net 高级调试之一:开始认识一些调试工具
    一、简介从今天开始一个长系列,Net高级调试的相关文章,我自从学习了之后,以前很多模糊的地方现在很清楚了,原来自己的功力还是不够,所以有很多不明白,通过学习Net高级调试,眼前豁然开朗,茅塞顿开。其实,刚开始要学习《Net高级调试》,还是很是很困难的,很多工具不会用,又不知道如......
  • 文件重命名工具摘要
    功能介绍:文件名处理:此工具可以批量处理指定目录及其子文件夹中的文件名。具体操作包括删除文件名中最后一个英文字母后的所有字符。字符替换:工具会将文件名中的下划线(_)和中文逗号(,)都替换为英文逗号(,),并确保英文逗号后有一个空格。文件后缀修改:无论原始文件的类型如何,此工具......
  • Mach-O Inside: 命令行工具集 otool objdump od 与 dwarfdump
    1otoolotool命令行工具用来查看Mach-O文件的结构。1.1查看文件头otool-h-v文件路径-h选项表明查看Mach-O文件头。-v选项表明将展示的内容进行"符号化"处理。上面命令行输出的一个例子如下:magiccputypecpusubtypecapsfiletypencmdssizeofcmds......
  • 自制Windows激活工具
    整体效果大概就是这样吧,,,,在Lab-WorkwithMicrosoftOfficeintegration-Training|MicrosoftLearn中测试,效果还不错。源代码 PublicClassForm1PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Clic......
  • EDA工具使用+GIT操作+python编程+C语言编程+Riscv相关+TCL操作
    EDA工具使用Verdi覆盖率转网页urg-full64-dirsimv.vdbVerdi加载sessionverdi-ssrsessionFileVcs分部编译额外选项-partcomp:自动分块编译。-fastpartcomp:使用多核计算系统并行部分编译。-pcmakeprof:查看每部分编译占用的时间,方便对时间更久的进行拆分。-partc......