日期:2014-05-20  浏览次数:20705 次

一个简单的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  是用来 
------解决方案--------------------
浮点数本身就不精确,计算的结果自然不会准确;