- 看代码:
double a = 0.01;
double b = 0.0109;
double c=a+b;
System.out.println(c);
大家看到这里说结果肯定是:0.0209;
计算机运算结果:0.020900000000000002
由此可见这里存在精度问题,在支付等方面这就是非常重要的。
解决办法:
需要使用BigDecimal这个类:
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
使用以上做加减 就不会存在精度问题。乘除 请自行查看类的方法