BigDecimal与double确保金额计算的精确

BigDecimal 类的方法

序号 方法名 类型 描述
1 public BigDecimal(double val) 构造

将double表示形式转换BigDecimal

2 public BigDecimal(int val) 构造

将int表示形式转换为BigDecimal

3 public BigDecimal(String val) 构造

将字符串表示形式转换BigDecimal

4 public BigDecimal add(BigDecimal augend) 普通
5 public BigDecimal subtract(BigDecimal subtrahend) 普通
6 public BigDecimal multiply(BigDecimal multiplicand) 普通
7 public BigDecimal divide(BigDecimal divisor) 普通

 

 

 

 

 

 

 

 

      确保精度

  1. 使用bigdecimal的计算方法,如果需要四舍五入保留两位小数,调用方法,返回数据类型定义为基本数据类型
    BigDecimal b1 = new BigDecimal("1.00");
    BigDecimal b2 = new BigDecimal("2.33");
    
    double c = b1.multiply(b2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();

     

  2. public BigDecimal(double val) 构造方法  在进行计算后会损失精度,不可取用,尽量避免使用

  3. double转bigdecimal时,使用public BidDecimal(String val) 构造方法进行转换,然后进行计算,无损失精度

    double d = 32.15;
    String str = new Double(d).toString();
    BigDecimal result = new BigDecimal(str); 

     

你可能感兴趣的:(Java)