JAVA 精度损失 求大神指教

图片说明
这里的0.1不是默认是double类型,为什么会产生精度损失?求大神指教

高精度的加法计算,用BigDecimal,具体原因可以百度BigDecimal

![图片说明](https://img-ask.csdn.net/upload/201703/24/1490327530_63523.png)图片说明

你都不把你的结果贴出来,鬼知道

double是浮点数,不精确的,不能用于精确运算。
public static Double add(Double value1, Double value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.add(b2).doubleValue();
}

java计算,尽量采用BigDecimal来处理;

public static void main(String[] args) {
    double a =0;
    for(a=0; a!=10;){
        a = getA(a);
        if(a>10){
            break;
        }else{
            System.out.println(a);
        }
    }
}

public static double getA(double a){
    BigDecimal aBigDecimal = new BigDecimal(a);
    aBigDecimal = (aBigDecimal.add(new BigDecimal("0.1"))).divide(new BigDecimal("1"),1,2);
    return aBigDecimal.doubleValue();
}

高精度的加法计算,用BigDecimal

多看看java代码优化的文章...大多数都提到了的.....高精度计算用bigdecimal