BigDecimal bignum1 = new BigDecimal("10");
BigDecimal bignum2 = new BigDecimal("5");
BigDecimal bignum3 = null;
//加法
bignum3 = bignum1.add(bignum2);
System.out.println("和 是:" + bignum3);
//减法
bignum3 = bignum1.subtract(bignum2);
System.out.println("差 是:" + bignum3);
//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println("积 是:" + bignum3);
//除法
bignum3 = bignum1.divide(bignum2);
比较大小
BigDecimal比较大小
这个类是java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断
1 比较对象是否相等
一般的对象用equals,但是BigDecimal比较特殊,举个例子:
BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);
在现实中这两个数字是相等的,但是如果用
a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了
解决办法:
if(a.compareTo(b)==0) 结果是true
简单翻译:
结果是
-1 小于
0 等于
1 大于
异常
用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:
1 java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
上网查了一下这个异常的,找到了原因所在:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决的办法就是给divide方法设置精确的小数点,如:divide(xxxxx,2)。