一.舍入模式的三种定义方式
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类型数据的相反数 |