你这个算法不成啊,你再看看a和b的值,实际上就是求阶乘,这么大的数值,在中间过程中都溢出的不成样子了,你需要将算法改为:PI/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+....明白了吗?
double fun(double eps){double t=1.0/3,sum=1; for(int i=2;t>=eps;i++) { sum+=t; t*=(double)i/(i+i+1); } return sum*2;}
t的初值错了。