首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

透过公式编写π的近似值

2012-10-20 
通过公式编写π的近似值通过计算π的公式π/41-1/3+1/5-1/7……计算π的值。C/C++ code#includestdio.h#includ

通过公式编写π的近似值
通过计算π的公式π/4=1-1/3+1/5-1/7……计算π的值。

C/C++ code
#include<stdio.h>#include<conio.h>#include<math.h>int main(void){    int s=-1;    double t=1,pi=0,n=1;    while(fabs(t)>=1e-8)    {        t=1/(2*n-1);        n++;        s*=-1;        pi+=s*t;    }    printf("%.8f",pi*4);    getch();    return 0;}

输出:
以下是书上的代码:
C/C++ code
#include<stdio.h>#include<conio.h>#include<math.h>int main(void){    double pi=0,t=1,n=1;    int s=1;    while(fabs(t)>=1e-8)    {        pi+=t;        n+=2;        s=-s;        t=s/n;    }    printf("%.8f\n",pi*4);    getch();    return 0;}

输出:
为什么一个输出的是:3.14159263,一个是3.14159267,最后一位为什么一个是3,一个是7,实现的是相同条件下的相同功能啊???

[解决办法]
在while循环里你是先使用了除法,书上是后使用了除法,因此你的精度误差积累得要大一些。

[解决办法]
举个例子吧
1/3=0.3333......
0.3333....*3=0.999999...
而1*3=3;
3/3=1所以就结果不同 
如果在MatlAB中就更明显了

热点排行