BigDecimal中divide方法抛异常:
Non-terminating decimal expansion; no exact representable decimal result
Idea也会给出警告
原因是在做除法的时候出现了无限不循环小数如:33.333333333333
解决方案
在做除法的时候指定保留的小数的位数:
BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3), 6, BigDecimal.ROUND_HALF_UP);
扩展:
BigDecimal 判断大于小于
BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
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");
}