如何用C语言程序实现输出圆周率小数点后100位小数

2024-11-20 13:43:21
推荐回答(4个)
回答1:

  1. π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题。现在有了电脑, 这个问题就简单了。
    电脑可以利用级数计算出很多高精度的值, 有关级数的问题请参考《高等数学》,以下是比较有名的有关π的级数:
    π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...

  2. 例程:
    /*这是一位大神编制的算pi程序,精确到800位,具体算法已不可考*/

    #include
    int main()
    {
        long   a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501]; 
        for(;b-c;)g[b++]=a/5; 
        for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a) 
        for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b); 
        reutrn 0;
    }

回答2:

double精度不够,只有用数组模拟了。
楼上的程序不正确,我改了下

#include
int main()
{
long a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501];
for(;b-c;)g[b++]=a/5;
for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a)
for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b);
}

回答3:

可以用如下程序:

注:先输入要几位小数
#include
#include
using namespace std;
int main()
{
long a=10000,b=0,d=0,e=0,f=0,i,j;
cin>>i;
j=i/288*1000;
long c=j,g[j+1];
while(b-c)
{
g[b++]=a/5;
}
while(d=0,f=c*2)
{
b=c;
while(d+=g[b]*a,g[b]=d%--f,d/=f--,--b)
{
d*=b;
}
c-=14;
printf("%.4d ",e+d/a);
e=d%a;
}
getchar();getchar();
return 0;
}

回答4:

long a=10000,b,c=3500,d,e,f,g[3501];

for(;b-c;)g[b++]=a/5;
for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a)
for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b);
这个是100位程序

#include

main()
{
double i,pi=1;

for(i=5;i<=1000000;i=i+4)
{
pi=pi-1/(i-2)+1/i;
}

pi=pi*4;

printf("\n3.100%lf",pi);
}