C语言计算圆周率72位小数,求指教!!谢谢!

如题所述

第1个回答  2014-02-08
#include <stdio.h>      
long a=10000,b,c=2800,d,e,f[2801],g;      
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);      
}

牛人写的,看了几天没研究懂,要这有用么?关键是算法,在弄清算法的前提下编写程序才能真正提高编程能力,要不然看了也是白搭。

追问

代码如下:

第2个回答  2014-02-08
  #include<cstdio>
  long long a=10000,b,c=2800,d,e,f[2801],g;
  int 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);
system("pause");
return 0;
  }追问

看不懂

第3个回答  2014-02-08
首先我想知道你这样做的目的是什么?因为圆周率后面的72小数网上也可以查到,而且你这里面的难点不在计算,而在需要使用自己的数据类型表达72位小数。追问

我自己写了一个,但只输出了16位,所以就问了下。我用的是一个公式

代码如下:

追答

双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,参考
所以你这样做最多只能输出16位小数,而不是你使用%74.72f进行输出就可以有72位小数的。而且想达到那么高的精度你的积分区间得划分得足够精细才行,不然连算出来的那16位也不一定是准确的。至于划分到多精细能在C语言中进行数值计算达到16位的小数精度我也不太会算,你可以参考数值计算方面的教材

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网