注册 登录
编程论坛 C++教室

关于近似求解PI的问题

不二洛基袋鼠 发布于 2013-03-24 20:47, 511 次点击
利用公式PI/2=2/1 * 2/3 * 4/3 * 4/5 * 6/5 * 6/7 * 8/7 * 8/9 *......
近似的求解PI
#include<iostream>
using namespace std;
int main()
{
    double PI=4/3.0,t=2,n=3.0,s=4;
    int i=1;
    while((t-s/n)>1e-6){
        t = s/n;
        if(i==1)
             n+=2;
        else s+=2;
        i = -i;

        PI=PI*t;
        }
    cout<<"PI="<<PI*2<<endl;
    return 0;

}
为什么输出的值不是3.1415926呢
是2.84444???
求解啊
6 回复
#2
不二洛基袋鼠2013-03-24 21:11
求解。。。。。。。。。。。。。。
#3
wp2319572013-03-24 21:13
你不都进行*2运算了吗
#4
yuccn2013-03-24 21:20

((t-s/n)>1e-6){ 这个条件不对了,因为t-s/n 不用3次循环就是负数了
#5
不二洛基袋鼠2013-03-24 21:21
回复 3楼 wp231957
可是我搞不明白为什么最后的答案不是3.1415926呢???
#6
wp2319572013-03-24 21:22
看4楼
yu版主是权威
#7
yuccn2013-03-24 21:40
int main()
{
    double PI=1,item1=1,index=1,PI_temp = 1;

    do {
        PI_temp = PI;
        item1 = ((index+1) / index ) * ((index +1) / (index + 2));
        index += 2;
        PI *= item1;
    } while((PI - PI_temp) * 2 >1e-9);

    cout<<"PI="<<PI *2 <<endl;
    return 0;
}
1