这里的0.1不是默认是double类型,为什么会产生精度损失?求大神指教
高精度的加法计算,用BigDecimal,具体原因可以百度BigDecimal
你都不把你的结果贴出来,鬼知道
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