欢迎光临散文网 会员登陆 & 注册

关于π的精确值计算

2021-11-20 19:52 作者:进击的水瓶  | 我要投稿

/*事先声明:本文是以log算法为基础,写出π的高精度计算程序,编译语言为C++,使用编辑器为DevC+,如有侵权请及时联系,会立即删除。在未经本人许可禁止用于商用,改写,感谢支持!*/

#include<iostream>

#include<cmath>

#include<iomanip>

using namespace std;

int main(){

float s;int b,x,n,c,i,j,d,l,a[85000];

cout<<"欢迎您的验证,现在我们开始验证π的高精度的计算。"<<endl;

cout<<endl<<"请输入精确位数(x<=80000):";

cin>>x;

if(x<=80000){cout<<"输入有效,正在计算..." <<endl;

if(x==80000){cout<<"预计需要两分钟,请耐心等待"<<endl;}

for(s=0,n=1;n<=85000;n++){s=s+log10((2*n+1)/n); 

if(s>x+1){break;}}

for(i=0;i<=x+5;i++){a[i]=0;}

for(c=1,j=n;j>=1;j--){d=2*j+1;

for(i=0;i<=x+4;i++){ a[i]=c/d;c=(c%d)*10+a[i+1];}

a[x+5]=c/d; 

for(b=0,i=x+5;i>=0;i--){a[i]=a[i]*j+b;b=a[i]/10;a[i]=a[i]%10;}

a[0]=a[0]+1;

c=a[0];}

for(b=0,i=x+5;i>=0;i--){

a[i]=a[i]*2+b;b=a[i]/10;a[i]=a[i]%10;}

cout<<endl<<"π="<<a[0]<<".";

for(l=10,i=1;i<=x;i++){ 

cout<<a[i];l++;

if(l%10==0){cout<<"   ";} 

if(l%60==0){cout<<endl;}}cout<<endl;}

else{cout<<"(Runtime Error)";}

return 0;}

关于π的精确值计算的评论 (共 条)

分享到微博请遵守国家法律