首页 > 编程语言 >BigDecimalUtil工具类 Java 多种类型(Double, String, Integer)转换成BigDecimal 进行加减乘除运算

BigDecimalUtil工具类 Java 多种类型(Double, String, Integer)转换成BigDecimal 进行加减乘除运算

时间:2024-10-18 15:49:25浏览次数:3  
标签:Java String places int Double num2 BigDecimal num1

工具说明

没有什么太复杂的代码。
先是通过方法名称确定返回值的类型(BigDecimal、Double、String)。
然后大量的重载方法,用“穷举法”把BigDecimal、Double、String、Integer四种类型进行各种形式的两两组合,进行加减乘除运算。
运算时非BigDecimal类型的参数会转化成BigDecimal以防止精度缺失。


使用方法

加法

  • 共3种方法
    1. add(num1, num2, int places)返回BigDecimal类型的结果
    2. addToDouble(num1, num2, int places)返回Double类型的结果
    3. addToString(num1, num2, int places)返回String类型的结果
  • 以上3个方法都适用的说明:
    • num1和num2为相加的两个值,可以为BigDecimal、Double、String、Integer四种类型任意类型。
    • num1或num2,如果传入空值,会被赋值为0进行计算。
    • places是一个int类型参数,决定结果取小数点后的几位(四舍五入)。加法不强制要求改参数,不需要的话只写前两个参数就可以了。
      //add(num1, num2) 加法 返回BigDecimal
      BigDecimal addResult = BigDecimalUtil.add(a, b);
      //add(num1, num2, int places) 加法 返回BigDecimal 同时保留2位小数
      BigDecimal addResult2 = BigDecimalUtil.add(a, b, 2);
      
      //addToDouble(num1, num2) 加法 返回Double
      Double addToDoubleResult = BigDecimalUtil.addToDouble(b, c);
      //add(num1, num2, int places) 加法 返回Double 同时保留2位小数
      BigDecimal addToDoubleResult2 = BigDecimalUtil.addToDouble(a, b, 2);
      
      //addToString(num1, num2) 加法 返回String
      String addToStringResult = BigDecimalUtil.addToString(c, d);
      //addToString(num1, num2, int places) 加法 返回String 同时保留2位小数
      String addToStringResult2 = BigDecimalUtil.addToString(c, d, 2);
      

减法

  • 减法,其实跟加法是一个道理,顶多提一句的就是第一个参数num1是被减数,第二个参数num2是减数,共3种方法
    1. subtract(num1, num2, int places)返回BigDecimal类型的结果
    2. subtractToDouble(num1, num2, int places)返回Double类型的结果
    3. subtractToString(num1, num2, int places)返回String类型的结果
  • 同样不需要四舍五入的取n位小数的话就不需要写第三个参数了。
  • 同样,num1或num2,如果传入空值,会被赋值为0进行计算。

乘法

  • 乘法和加法基本一致,共3种方法
    1. multiply(num1, num2, int places)返回BigDecimal类型的结果
    2. multiplyToDouble(num1, num2, int places)返回Double类型的结果
    3. multiplyToString(num1, num2, int places)返回String类型的结果
  • 乘法运算时,num1或num2,如果传入空值,也会被赋值为0进行计算,其实就是不管谁为空,最后都会得到一个为0的结果。

除法

  • 除法大体和减法一样,第一个参数num1是被除数,第二个参数num2是除数,共3种方法
    1. divide(num1, num2, int places)返回BigDecimal类型的结果
    2. divideToDouble(num1, num2, int places)返回Double类型的结果
    3. divideToString(num1, num2, int places)返回String类型的结果
  • 但除法有一定的特殊性:
    1. 除法中,第三个参数 int places保留小数的位数必须传入,以应对无限小数。
    2. 第二参数,即被除数,如果传空或者传0话,不会走计算过程,直接返回0作为结果。

工具类代码

  • 代码过长,就不贴在博客里了,已经上传至资源里。
  • 不方便从资源下载的,可以访问github:点击前往

标签:Java,String,places,int,Double,num2,BigDecimal,num1
From: https://blog.csdn.net/weixin_41642679/article/details/143051702

相关文章

  • 最新毕设-SpringBoot-校园学习交流和资源共享平台-78210(免费领项目)可做计算机毕业设计
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1 数据流程2.2.2 用户登录流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系统......
  • java----IO流
    IO流概述IO流:存储和读取数据的解决方案I:inputO:ourput流:像水流一样传输数据IO流作用?用于读写数据(本地文件,网络)IO流按照流向可以分类为哪两种流?输出流:程序->文件 输入流:文件->程序IO流按照操作文件的类型可以分类哪两种流?字节流:可以操作所有类型的文件......
  • 挑战1000道javascript手写题之实现Promise.all(9)
    Promise.all介绍Promise.all方法接收一个数组作为参数,这个参数数组的元素也都是promise实例,该方法返回一个promise示例。constp=Promise.all([p1,p2,p3]);p的状态由p1、p2、p3决定,p最后的状态要么是变成fulfilled,要么变成rejected。变成fulfilled:只有当p1、p2、p3......
  • [Javascript] Write Promise.all()
    Promise.myAll=function(promises){letres,rej;constp=newPromise((resolve,reject)=>{res=resolve;rej=reject;});leti=0;letresult=[];//sincePromise.allcantakeanyiterableasinput//tocheckwhether......
  • javascript渲染OFD的库
    目前使用javascript开发的OFD的渲染库主要有两个:ofd.js和liteofd,其中ofd.js开发比较早,liteofd是最近刚出现的js库。首先结论是ofd.js渲染效果没有liteofd好,因为ofd.js目前有一些效果没有支持,比如对字体没有比较好的解析和支持。liteofd相对ofd.js效果更好,并且提供的接口方法更多......
  • [Javascript] Write .call()
    Function.apply.myCall=function(ctx,...args){ctx=ctx===null||ctx===undefined?globalThis:Object(ctx);constfn=this;constkey=Sybmol("fn");//wedon'twantusercansee[Sybmol("key")]inFunctionpro......
  • Java中的Collections类和泛型
    在Java的集合框架中,`Collections`类扮演着一个非常重要的角色。它提供了一系列对集合进行操作的静态方法,这些方法可以用于各种集合类型,如`List`、`Set`和`Map`等,从而方便我们对集合进行诸如排序、查找、反转等操作。##一、排序操作1.**`sort`方法**  -`Collections`类......
  • Java爬虫:获取商品评论数据的高效工具
    在电子商务的激烈竞争中,商品评论作为消费者购买决策的重要参考,对于商家来说具有极高的价值。它不仅能够帮助商家了解消费者的需求和反馈,还能作为改进产品和服务的依据。Java爬虫技术,以其稳健性和高效性,成为了获取商品评论数据的理想选择。本文将介绍如何使用Java爬虫API获取商......
  • java计算机毕业设计“阴阳师”游戏玩家社区设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,游戏产业迎来了蓬勃发展的黄金时期,其中移动游戏更是占据了重要的市场份额。《阴阳师》作为一款极具人气的手机游戏,吸引......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-3-启动浏览器(详细教程)
    1.简介 通过前边两篇文章跟随宏哥学习想必到这里已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动两大浏览器。按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome。但是微软已经在Win10中不维护IE浏览器了,用Edge浏览器代替或者兼容IE模式的浏览器,因此宏哥这......