c语言函数格里高利公式,格里高利公式原理

C语言编程,用for循环完成。用格里高利公式计算并输出圆周率的值。

#include stdio.h

目前创新互联已为上1000家的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、韶山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

#include math.h

int main()

{

double sign = 1.0;

double sum = 0.0;

int n;

printf("请输入循环次数:n = ");

scanf("%d", n);

for(int i=1; in; i=i+2)

{

sum = sum + sign / i;

sign = ( -1 ) * sign;

}

sum = 4 * sum;

printf("pi = %f\n",sum);

return 0;

}

C语言调用函数funpi(e)使用格里高利公式求pi的近似值

函数里,i 没有赋初值。

去掉 函数里的 scanf("%d",e);因为你从主函数输入了。

int main(void){

double e,sum;

double funpi(double e);

scanf("%lf",e);

sum=funpi(e);

printf("pi=%.4f",sum*4);

return 0;}

double funpi(double e){

int fuhao=1,fenmu=1;

double i=3.0,sum=0; // i 初值3

//scanf("%d",e); //去掉输入

while (fabs(i)=e) {

i=fuhao*1.00/fenmu;

sum=sum+i; fuhao=-fuhao; fenmu=fenmu+2;

}return sum;

}

输入

0.0001

pi=3.1418

c语言用格里高利公式求pi问题

double能算几位??

肯定不能求出来啊~~

关键是精度~~double大到(或小到)一定的时候就不能精确了~~

一般算无理数需要用数组模拟基础运算~~分位或分组计算出答案~~

比如π,需要将公式转换成连乘的形式,用数组记录下各位各组计算产生的进位,再对下一位进行计算~~

e,需要将公式转换成连除的形式,用数组记录下各各组位计算产生的余数~~

公式推导和精度的确定需要用到泰勒公式和泰勒公式余项的计算。

让你见识一下世界上最强的π的计算程序!

///////////////////////////////////////////////////

#include stdio.h

long a=10000,b,c=2800,d,e,f[2801],g;

void main()

{

for(;b-c;) f[b++]=a/5;

for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)

for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);

}

////////////////////////////////////////////////////

三行代码算几千位~~


当前文章:c语言函数格里高利公式,格里高利公式原理
链接URL:http://myzitong.com/article/hdcsod.html