BigDecimal计算(加减乘除)
一.前言
Double只能处理16位有效数精度,在某些情况下精度对其需求是不够的,所以就有了BigDecimal。因为BigDecimal的精度范围的范围大,所以在问我们的开发业务中对精度要求高的属性,就需要BigDecimal来进行存储计算,防止精度丢失。这里我主要介绍一下BigDecimal的加,减,乘,除。四种基础计算。
二.内容
首先准备两个BigDecimal类型的数
// new第一个参数
BigDecimal num1 = new BigDecimal(20.5555555555);
// new第二个参数
BigDecimal num2 = new BigDecimal(10.5555555554);
精度类 MathContext:
MathContext可以自己定义保留的有效数字位数:
MathContext mathContext = new MathContext(2);
其中2是指有效数字位数。MathContext类还有几个默认参数分别是:
MathContext.UNLIMITED = 不限制精度 采用四舍五入
MathContext.DECIMAL32 = 7位有效数字 采用“最接近的”数字舍入
MathContext.DECIMAL64 = 16位有效数字 采用“最接近的”数字舍入
MathContext.DECIMAL128 = 34位有效数字 采用“最接近的”数字舍入
1.加法
加法可以使用MathContext来确定有效数字位数:
// BigDecimal的加法 有两种 一种无精度入参 一种有精度入参// 无精度入参 num1减去num2BigDecimal addNum1 = num1.add(num2);// 有精度入参// MathContext.UNLIMITED = 不限制精度// MathContext.DECIMAL32 = 7位有效数字// MathContext.DECIMAL64 = 16位有效数字// MathContext.DECIMAL128 = 34位有效数字MathContext mathContext = new MathContext(2);BigDecimal addNum2 = num1.add(num2, MathContext.DECIMAL32);
2.减法
减法可以使用MathContext来确定有效数字位数:
// BigDecimal的减法 有两种 一种无精度入参 一种有精度入参// 无精度入参BigDecimal subNum1 = num1.subtract(num2);// 有精度入参BigDecimal subNum2 = num1.subtract(num2,MathContext.DECIMAL32);
3.乘法
乘法可以使用MathContext来确定有效数字位数
// BigDecimal的乘法 有两种 一种无精度入参 一种有精度入参// 无精度入参BigDecimal mulNum1 = num1.multiply(num2);// 有精度入参BigDecimal mulNum2 = num1.multiply(num2,MathContext.DECIMAL32);
4.除法
其中除法有很多不同入参的方法,以下举例4种:
// BigDecimal的除法// 无精度入参BigDecimal divNum1 = num1.divide(num2);// 有精度入参 MathContextBigDecimal divNum2 = num1.divide(num2,MathContext.DECIMAL32);// 有精度入参 RoundingMode RoundingMode.HALF_UP -> 四舍五入精度BigDecimal divNum3 = num1.divide(num2, RoundingMode.HALF_UP);// 有精度入参 RoundingMode RoundingMode.HALF_UP -> 四舍五入精度 scale 表示四舍五入到几位小数BigDecimal divNum4 = num1.divide(num2,2, RoundingMode.HALF_UP);
温馨提示:
在使用BigDecimal来进行数据操作时,一定要避免使用的BigDecimal对象为空的情况,否则会抛出NullPointerException空指针异常。为了避免此情况,为空时可以赋值:BigDecimal.ZERO,这个是BigDecimal类自己提供的枚举,剩下的枚举自己去找一下吧~
BigDecimal计算(加减乘除)相关推荐
- html输入公式得到混合运算结果,excel表格如何用公式计算加减乘除混合运算-excel乘法如何计算,excel函数怎么计算乘法...
Excel支持数学中的四则运算,直接在目标单元格写相应的公式即可.例百如求A1减B1的差,在C1单元格可输入:=A1-B1 需注意: Excel里面任何公式(包括数学四则运算)都是需要以等号度开头. ...
- 三角函数算式的c语言表达式,能计算加减乘除表达式,求添加计算平方、三角函数的功能,...
能计算加减乘除表达式,求添加计算平方.三角函数的功能,在线等,急 各位C语言大神,求帮忙,现在代码能计算加减乘除表达式,但是不能计算平方和三角函数,求大神添加功能. 在线等~~~ // EX6_08. ...
- 在Word中如何直接计算加减乘除?
在Word中如何直接计算加减乘除? 目录 在Word中如何直接计算加减乘除? 1.添加计算工具,[文件]-[选项]-[自定义]-[不在功能区的命令]-找到[计算]点击[添加][确定] 2.选中选计算的 ...
- 详解BigDecimal及其加减乘除运算
目录 一.BigDecimal概述 二.构造函数详解 1.BigDecimal(int val) 2.BigDecimal(int val, MathContext mc) MathContext 3 ...
- python字符串计算加减乘除代码_Python 70行代码实现简单算式计算器解析
描述:用户输入一系列算式字符串,程序返回计算结果. 要求:不使用eval.exec函数. 实现思路:找到当前字符串优先级最高的表达式,在算术运算中,()优先级最高,则取出算式最底层的(),再进行加减乘 ...
- bigdicmal除法精度设置_java中BigDecimal进行加减乘除的基本用法
前言 众所周知Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或 ...
- BigDecimal 计算余数
Java计算大数据,使用BigDecimal,它提供了很多方法. 通过BigDecimal取余: // 返回数组中,第一个元素是商,第二个元素是余数 public BigDecimal[] divid ...
- 用计算机算加法与乘法应该怎么算,你知道计算机是怎么计算加减乘除算式的么?...
说到加减乘除运算,只要学过乘法口诀的应该没有不会算的吧. 什么一一得一,一二得二....信手拈来,简直不要太容易. 难一点的无非也就是这四种运算符号组合起来而已,但是如此简单的运算对于计算机而言,真的 ...
- Java 实现位运算计算加减乘除
机器数和机器数的真值 一个数在计算机中的二进制表示形式,叫做这个数的机器数.机器数是带符号的,在计算机用机器数的最高位存放符号,正数为0,负数为1.举个例子,比如在机器字长为8位的情况下(机器字长是指 ...
最新文章
- Testing Windows Live Writer 2
- 再学 GDI+[83]: TGPImage(3) - 平行四边形变换
- Redis数据类型(String)
- Linux怎么查看设置系统语言包
- Spark SQL(三)之视图与执行SQL
- linux中xy是什么命令,Linux命令中chmod 777 以及drwxr-xr-x分别代表什么意思
- 【正点原子MP157连载】第四十四章Linux SPI总线框架-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 谈谈在深圳挤公交那些事
- pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
- 微信公众号群发接口和原创校验
- 浅析:光纤跳线的插入损耗和回波损耗
- 【LeetCode】算法初涉
- Mysql8.0下载(网盘云盘)
- Java程序员如何月薪达到两万,需要技术水平达到什么程度?
- Go36-36,37-字符串
- 鸿蒙系统,鸿蒙app简易登录界面,界面开发教程
- 用python完成选股策略a股_Python 金融: 0亏损选股策略
- 超级简单的自动刷新_144Hz刷新率真比60Hz快 谁用谁知道
- ATI移动显卡全系列型号及参数一览表
- 用HTML里面的表格制作可以下拉的导航栏,excel表格中下拉菜单制作有什么方法