Java BigDecimal类型的 加减乘除运算及扩展
Posted 格子衫111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java BigDecimal类型的 加减乘除运算及扩展相关的知识,希望对你有一定的参考价值。
Java BigDecimal 类型的加减乘除运算不能直接用相关运算符号(如:+,-,*,/),需要调用方法,方法如下:
加法:add
减法:subtract
乘法:multiply
除法:divide
示例代码:
BigDecimal num1 = new BigDecimal("8");
BigDecimal num2 = new BigDecimal("2");
BigDecimal num3 = null;
//加法
num3 = num1.add(num2);
System.out.println("求和:" + bignum3); //10
//减法
num3 = num1.subtract(num2);
System.out.println("求差:" + num3); //6
//乘法
num3= num1.multiply(num2);
System.out.println("乘法积:" + num3); //16
//除法 注意:当不整除,出现无限循环小数时,会抛异常
num3 = num1.divide(num2);
System.out.println("除法结果:" + num3); //4
扩展:
1. 两个数比较大小,可以使用 compareTo 方法
如:int result= num1.compareTo(num2);
返回的结果是int类型
- 结果为1: 表示num1 大于 num2;
- 结果为-1:表示num1 小于 num2;
- 结果为0: 表示num1 等于 num2
2.在进行除法运算时,可能会除不尽,这时应指明保留几位小数。
如:num3 = num1.divide(new BigDecimal(1.13),2,BigDecimal.ROUND_HALF_UP);
这里有3个参数,意义如下:
- 参数1:BigDecimal类型,表示除数,8/1.13,这个参数值就是1.13;
- 参数2:int 类型,表示小数点后保留几位小数,这里是2,就是保留两位小数;
- 参数3:int类型,表示舍入模式,BigDecimal 提供了几种常量值。
BigDecimal 提供的舍入模式(roundingMode)介绍:
ROUND_CEILING: 舍位时往正无穷方向移动
举例:1.1->2 1.5->2 1.8->2 -1.1->-1 -1.5->-1 -1.8->-1
ROUND_DOWN: 向0的方向移动
举例:1.1->1 1.5->1 1.8->1 -1.1->-1 -1.5->-1 -1.8>-1
ROUND_FLOOR: 与CEILING相反,往负无穷
举例:1.1->1 1.5->1 1.8->1 -1.1->-2 -1.5->-2 -1.8->-2
ROUND_HALF_DOWN: 以5为分界线,五舍六入
举例:1.5->1 1.6->1 -1.5->-1 -1.6->-2 1.15->1.1 1.16->1.2 1.55->1.5 1.56->1.6
ROUND_HALF_EVEN: 同样以5为分界线,如果是5,则前一位变偶数
举例:1.15->1.2 1.16->1.2 1.25->1.2 1.26->1.3
ROUND_HALF_UP: 最常见的四舍五入
ROUND_UNNECESSARY: 无需舍位
ROUND_UP: 与ROUND_DOWN相反,远离0的方向
举例:1.1->2 1.5->2 1.8->2 -1.1->-2 -1.5->-2 -1.8->-2
3.当进行加减乘运算时,也可以通过 setScale 方法设置精度
如:num3 = num1.multiply(new BigDecimal(0.345),2,BigDecimal.ROUND_HALF_UP);
以上表示,num1 乘以 0.345 后,结果 num3 保留两位小数,并采用四舍五入模式。
4.BigDecimal取其中最大、最小值、绝对值、相反数
- num1.max (num2) //比较取最大值
- num1.min(num2) //比较取最小值
- num1.abs() //取最绝对值
- num1.negate() //取相反数
以上是关于Java BigDecimal类型的 加减乘除运算及扩展的主要内容,如果未能解决你的问题,请参考以下文章