一个简单的java程序,求解。。。。
public class A{
public static void main(String args[]){
int i=0,sign=1;
double demo=3.0,sum=1.0,term;
for(i=1;i<10000;i++){
sign=-sign;
term=sign/demo;
sum=sum+term;
demo=demo+2;
}
System.out.println("sum="+sum);
}
}
程序没有错误,可是答案不对,正确答案是0.78537226.可是我运行出来的结果跟它就差了那么零点零几,怎么回事啊?
------解决方案--------------------如果追求高精确度的话,就不能使用double类型,而应该使用BigDecimal
类型
------解决方案--------------------浮点数运算出现这种问题属于正常现象。
你如果希望精度很高,那你就用BigDecimal,不要用double
------解决方案--------------------浮点数的精度是硬伤呀!如果想精确计算就要用定点数!
------解决方案--------------------BigDecimal 是用来
------解决方案--------------------浮点数本身就不精确,计算的结果自然不会准确;