Double float丢失精度是怎么回事?

Double 和 float 都有这个问题

  Double val1 = new Double(2.01);
  Double val2 = new Double(1.00);
  double va3 = val1 - val2;
  System.out.println(va3);
   //  输出结果 1.0099999999999998 ! 

使用BigDecimal 类型去做计算。

// BigDecimal 一定要传String 类型的参数
BigDecimal b1 = new BigDecimal("2.01");
BigDecimal b2 = new BigDecimal("1.00");
System.out.println(b1.subtract(b2));

你可能感兴趣的:(小小技术点)