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

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

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/125049337