#2
vic2005-03-24 17:21
请查阅你的系统的<include/limits.h>中long / double long 的最大定义, 如果用:
n*sin(360/n)
两个long型死活也算不出100位的数.所以你的算法就不对了.(当然,不考虑算法问题,pi 可以定义为 char *pi)
参看:
圆周率的计算方法古人计算圆周率,一般是用割圆法。即用圆的内接或外切正多边形来逼近圆的周长。Archimedes用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度。这种基于几何的算法计算量大,速度慢,吃力不讨好。随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。下面挑选一些经典的常用公式加以介绍。除了这些经典公式外,还有很多其他公式和由这些经典公式衍生出来的公式,就不一一列举了。
|
我要这样一个数据 类型来储存圆周率pi, 精确噢!帮忙看一个程序。
#include<math.h>
typedef struct {
?????
}abc;
main()
{
abc pi;
int n;
scanf("%d",&n);
pi=n*sin(360/n);
printf("%??",pi);
getch();
}
其中??为不懂之处.指教,指教.!!!
使圆周率pi 为定义的一种类型,能够储存小数点后100位小数。Undrestand???