基本操作
减法运算subtract()
加法运算add()
乘法multiply()
除法divide()
绝对值abs()
设置保留小数位
ROUND_HALF_UP 四舍五入
BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);
- 其他
比较大小
compareTo()
BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
//使用compareTo方法比较
if(a.compareTo(b) == -1){
System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
System.out.println("a小于等于b");
}
注意:BigDecimal运算过程中可能会和期望的值略有区别
BigDecimal a = new BigDecimal (0.32);
BigDecimal b = new BigDecimal (111);
-
使用String初始化BigDecimal 符合期望值
-
使用double,不符合期望值 (flaot也是)
public class Main {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("2.23434");
BigDecimal b = new BigDecimal(2.23434);
System.out.println(a);
//2.23434
System.out.println(b);
//2.234339999999999992752464095246978104114532470703125
}
}
由于double底层不精确,传入到BigDecimal就是错误的,所以不符合期望值
参考链接
https://blog.youkuaiyun.com/qq_25170493/article/details/82773949