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

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

BigDecimal中divide方法抛异常:

  1. Non-terminating decimal expansion; no exact representable decimal result

Idea也会给出警告

原因是在做除法的时候出现了无限不循环小数如:33.333333333333

解决方案

在做除法的时候指定保留的小数的位数:

  1. BigDecimal rate = new BigDecimal(1).divide(new BigDecimal(3), 6, BigDecimal.ROUND_HALF_UP);

扩展:

BigDecimal 判断大于小于

  1. BigDecimal a = new BigDecimal (101);
  2. BigDecimal b = new BigDecimal (111);
  3. //使用compareTo方法比较
  4. //注意:a、b均不能为null,否则会报空指针
  5. if(a.compareTo(b) == -1){
  6. System.out.println("a小于b");
  7. }
  8. if(a.compareTo(b) == 0){
  9. System.out.println("a等于b");
  10. }
  11. if(a.compareTo(b) == 1){
  12. System.out.println("a大于b");
  13. }
  14. if(a.compareTo(b) > -1){
  15. System.out.println("a大于等于b");
  16. }
  17. if(a.compareTo(b) < 1){
  18. System.out.println("a小于等于b");
  19. }

相关文章