美文网首页
Java中BigDcimal操作【原创】

Java中BigDcimal操作【原创】

作者: elijah777 | 来源:发表于2019-08-13 22:48 被阅读0次

在Java中对于金额的计算,不能用原来的方法

一、加减乘除
BigDecimal a = new BigDecimal(28.62);
BigDecimal b = new BigDecimal(500);

// 加
BigDecimal ab =  a.add(b);
 
// 减
BigDecimal ad =  a.subtract(b);

//乘
BigDecimal c =  a.multiply(b);

// 除
BigDecimal c = a.divide(b);

二、比较大小

使用 compareTo

前者大于后者 返回 1

前者小于后者 返回 -1

前者等于后者 返回 0

  BigDecimal a = new BigDecimal(28.62);
  BigDecimal b = new BigDecimal(500);
        
  System.out.println(a.compareTo(b));   // -1  
  System.out.println(b.compareTo(b));   // 0
  System.out.println(b.compareTo(a));   // 1
        
示例
相除并向下保留八位小数
// 汇率 = (核销借款金额+流水金额)/外币金额(T3)
            BigDecimal currencyRate = stateApplyAmount.divide(currencyAmount, 8, ROUND_HALF_DOWN);

特别提示

如果两个金额相除而且除不尽 如10/3
会抛出异常
Non-terminating decimal expansion; no exact representable decimal result.
需要通过保留某些位小数来解决

相关文章

网友评论

      本文标题:Java中BigDcimal操作【原创】

      本文链接:https://www.haomeiwen.com/subject/rliijctx.html