平时的写法(涉及float和double的运算),很显然 精度丢失
System.out.println((0.01+0.06));//输出值: 0.06999999999999999
…
System.out.println(1123.3/100);//
System.out.println(4.015*100);//输出值: 401.49999999999994
float和double类型的主要设计是为了科学计算和工程计算,所以不用于来求精确结果的运算。那这就引申到了BigDecimal,当然还有个BigInteger, 用法一样:
代码:
//写法一
BigDecimal dea=new BigDecimal("0.01");
BigDecimal deb=new BigDecimal("0.06");
//写法二 //方法三,不推荐用就不写了。
BigDecimal deC=BigDecimal.valueOf(1.00);
BigDecimal deD=BigDecimal.valueOf(2.00);
//用法都一样
System.out.println("0.01 + 0.06 ="+deA.add(deB));//加
System.out.println("0.01 - 0.06 ="+deA.subtract(deB));//减
System.out.println("0.01 * 0.06 ="+deA.multiply(deB));//乘
System.out.println("0.01 / 0.06 ="+deA.divide(deD));//除
System.out.println("0.01 ^ 2.00 ="+deA.pow(2));//幂 即0.01的2次方
System.out.println("0.01 % 1.00 ="+deA.remainder(deC));//取余
图: