分析:
- 我们在一些计算的时候,double类型的数据,经常会有精度丢失问题。
例如:
System.out.println(0.09 + 0.01);
System.out.println(1 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
//运行结果分别是:
//0.09999999999999999
//0.6799999999999999
//101.49999999999999
//0.013009999999999999
这样的数据往往不是我们想要的,看起来虽然很小,如果是关于金融的项目,后果就很严重了。
那么我们应该怎么解决此问题呢?
查看Java的api,找到了BigDecimal这个类,可以解决这个问题。
BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
System.out.println(bd1.add(bd2));//加法
BigDecimal bd3 = new BigDecimal("1");
BigDecimal bd4 = new BigDecimal("0.32");
System.out.println(bd3.subtract(bd4));//减法
BigDecimal bd5 = new BigDecimal("1.015");
BigDecimal bd6 = new BigDecimal("100");
System.out.println(bd5.multiply(bd6));//乘法
BigDecimal bd7 = new BigDecimal("1.301");
BigDecimal bd8 = new BigDecimal("100");
System.out.println(bd7.divide(bd8));//除法
输出结果为:
0.10
0.68
101.500
0.01301
完美的解决了上面的问题。