BigDecimal中divide(除)方法注意问题_BigDecimal 判断大于小于

x33g5p2x  于2022-05-31 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(459)

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");
}

相关文章