回 帖 发 新 帖 刷新版面

主题:[讨论]求如何转成VFP代码(求π)

代码如下(两段):
#include <stdio.h>
#include <math.h>

void main()
{
        double e,b=1,d;                        //b:为正多边形边长
        long int i;                        //i:正多边形边数

        for(i=6;;i*=2)                        //正多边形边数加倍
        {
                e=b;                        //e:暂存边数为加倍前的边长
                d=1.0-sqrt(1.0-b*b/4);        //计算圆内接正多边形的边长
                b=sqrt(b*b/4+d*d);
                if(2*i*b-i*e<1e-15)
                {
                        break;        //精度达1e-15则停止计算
                }
                e=b;        //保存本次正多边形的边长作为下一次精度控制的依据
        }
        printf("π=%.15lf\n",i*b);        //输出π值和正多边形的边数
        printf("The number of edges of required polygon:%ld\n",i);
}

//外切法:

#include <stdio.h>
#include <math.h>

void main()
{
        double e,b=2*sqrt(3)/3,d;                //b:为正多边形边长

        long int i;                        //i:正多边形边数
        for(i=6;;i*=2)                        //正多边形边数加倍
        {
                e=b;                        //e:暂存边数为加倍前的边长
                d=sqrt(1.0+b*b/4)-1;        //计算圆外切正多边形的边长
                b=2*(sqrt(b*b+4)-2)/b;
                if(i*e-2*i*b<1e-15)
                {
                        break;        //精度达1e-15则停止计算
                }
                e=b;        //保存本次正多边形的边长作为下一次精度控制的依据
        }
        printf("π=%.15lf\n",i*b);        //输出π值和正多边形的边数
        printf("The number of edges of required polygon:%ld\n",i);

回复列表 (共4个回复)

沙发

求π嘛
?pi()

板凳

SET DECIMALS TO 15
?PI()

3 楼

对头,有现成的还求啥子PI嘛!

4 楼

呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册