BigDecimal 方法大全

一.舍入模式的三种定义方式

1.BigDecimal 常量

模式 常量名 描述
向上取整 ROUND_DOWN 直接删除多余的小数位
向下取整 ROUND_UP 2.35变成2.3
四舍五入 ROUND_HALF_UP 2.35变成2.4, 2.34变成2.3
五舍六入 ROUND_HALF_DOWN 5也会向下舍 2.35变成2.3
接近正无穷大的舍入 ROUND_CEILING -2.35 变成 -2.3,2.35变成2.4
接近负无穷大的舍入 ROUND_FLOOR -2.35 变成 -2.4, 2.35变成2.3
向最接近的数字舍入 ROUND_HALF_EVEN 如果与两个相邻数字的距离相等,则向相邻的偶数舍入
计算结果是精确的,不需要舍入模式 ROUND_UNNECESSARY 不舍入,如果结果精确会抛出异常

2.RoundingMode 枚举

其实就是枚举类里面封装了一个常量,引用了上面的枚举类常量,运用方法:RoundingMode.HALF_UP

UP(BigDecimal.ROUND_UP),
DOWN(BigDecimal.ROUND_DOWN),
CEILING(BigDecimal.ROUND_CEILING),
FLOOR(BigDecimal.ROUND_FLOOR),
HALF_UP(BigDecimal.ROUND_HALF_UP),
HALF_DOWN(BigDecimal.ROUND_HALF_DOWN),
HALF_EVEN(BigDecimal.ROUND_HALF_EVEN),
UNNECESSARY(BigDecimal.ROUND_UNNECESSARY);

3.MathContext 不可变对象

为一个不可变对象,他常用的构造方法如下:

  • MathContext(int setPrecision) 精度,默认舍入模式为四舍五入
  • MathContext(int setPrecision,RoundingMode setRoundingMode)
    精度,舍入模式

二.常用运算方法

1.加法 add()

方法 参数解释 描述
add(BigDecimal augend) subtrahend:加数 精度取两个数中精度较大的那个精度
add(BigDecimal augend,MathContext mc) subtrahend:加数,mc:看上面的MathContext

2.减法 subtract()

方法 参数解释 描述
subtract(BigDecimal subtrahend) subtrahend:减数 精度取两个数中精度较大的那个精度
subtract(BigDecimal subtrahend,MathContext mc) subtrahend:减数,mc:看上面的MathContext

3.乘法 multiply()

方法 参数解释 描述
multiply(BigDecimal multiplicand) multiplicand:另一个乘数 精度为两个乘数的精度相乘
multiply(BigDecimal multiplicand, MathContext mc) multiplicand:另一个乘数,mc:看上面的MathContext

4.除法 divide()

方法 参数解释 描述
divide(BigDecimal divisor) divisor:除数 不能整除就报错
divide(BigDecimal divisor,int roundingMode) divisor:除数,roundingMode:保留小数 默认舍入模式为ROUND_UNNECESSARY
divide(BigDecimal divisor,int scale,int roundingMode) divisor:除数,scale:保留位数,roundingMode:舍入模式

5.保留几位小数 setScale()

方法 参数解释
setScale(int newScale,int roundingMode) 第一个参数为保存的小数位数,第二个参数为舍入模式
setScale(int newScale,RoundingMode roundingMode) 第一个参数为保留的小数位数,第二个参数为舍入模式枚举类
setScale(int newScale) 第一个参数为保留的小数位数,默认的舍入模式为不舍入

6.比较大小 compareTo()

方法 参数解释 描述
compareTo(BigDecimal val) val:比较的参数 调用方法对象>val 返回 1,调用方法对象 < val 返回 -1,调用方法对象 = val 返回 0

三.其他方法

方法 方法用途
toString() 将BigDecimal对象的数值转换成字符串
floatValue 将BigDecimal对象中的值以单精度数返回
longValue() 将BigDecimal对象中的值以长整数返回
intValue() 将BigDecimal对象中的值以整数返回
max(BigDecimal val) 取两个数中最大的一个
min(BigDecimal val)
remainder(BigDecimal divisor) 求余数,求BigDecimal类型数据除以divisor的余数
abs() 绝对值,求BigDecimal类型数据的绝对值
negate() 相反数,求BigDecimal类型数据的相反数
posted @ 2021-07-22 11:12  0小豆0  阅读(861)  评论(0编辑  收藏  举报
隐藏
对话
对话