在JAVA中进行double的四则运算时,结果不一定正确
doublea=0.05;
doubleb=0.01;
System.out.println(a+b);//输出0.060000000000000005
doublea=1.0;
doubleb=0.42;
System.out.println(a-b);//0.5800000000000001
doublea=100;
doubleb=4.015;
System.out.println(a*b);//401.49999999999994
doublea=123.3;
doubleb=100;
System.out.println(a/b);//输出1.2329999999999999
doublea=123.4;
doubleb=100;
System.out.println(a/b);//输出1.234
对于需要精确结果的java程序,可以采用java.math.BigDecimal来实现
例如加法运算:

publicstaticdoubleadd(doublev1,doublev2)...{
BigDecimalb1=newBigDecimal(Double.toString(v1));
BigDecimalb2=newBigDecimal(Double.toString(v2));
returnb1.add(b2).doubleValue();
}
注意:此处构造BigDecimal时必须用字符串形式,否则同样达不到精确效果

publicstaticdoubleminus(doublev1,doublev2)...{
BigDecimalb1=newBigDecimal(v1);
BigDecimalb2=newBigDecimal(v2);
returnb1.subtract(b2).doubleValue();
}
doublea=1;
doubleb=0.42;
System.out.println(minus(a,b));//0.5800000000000001















对于需要精确结果的java程序,可以采用java.math.BigDecimal来实现
例如加法运算:















