*float和double类型,执行二进制浮点运算,数值范围上精确的近似计算,没有完全精确的结果,商业计算往往要求结果精确,这时候使BigDecimal。
*使用BigDecimal做处理,数据源是double类型要转化为Double.toString(),然后使用String类型的构造器来进行计算 。
1.使用folat或者double计算,会丢失精度
System.out.println(0.2 + 0.1);
System.out.println(0.3 - 0.1);
System.out.println(0.2 * 0.1);
System.out.println(0.3 / 0.1);
2.使用BigDecimal做处理,数据源是double类型要转化为Double.toString(),然后使用String类型的构造器来进行计算
BigDecimal a = new BigDecimal("2.4");
BigDecimal b = new BigDecimal("3.4");
BigDecimal c = new BigDecimal(2.4);//使用double构造器会出现丢失精度情况
BigDecimal d = new BigDecimal(3.4);//使用double构造器会出现丢失精度情况