| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:圆周率PI
只看楼主 加入收藏
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
 问题点数:0 回复次数:2 
圆周率PI
//这是一个求圆周率PI的程序,没有错误但是运行结果不对,请帮忙看一下
#include<iostream.h>
#include<math.h>

double arctan(double x);
int main()
{
    double a;
    double b;
    a = 16.0 * arctan(1 / 5.0);
    b = 4.0 * arctan(1 / 239.0);
    cout<<"PI= "<<a-b<<endl;
    return 0;
}
double arctan(double x)arctanx=x-x3/3+x5/5-x7/7+.....由于没公式编译器,所以把x的几次方直接这么写了
{
    double result = 0.0;
    double sqr = x * x;
    double num = x;//fenzi
    int den = 1;//fenmu
    double f = num / den;
    int flag = -1;
    while(abs(f) > 1e-15)
    {
        result += f;
        num = num * sqr * flag;
        den += 2;
        f = num / den;
    }
    return result;
}
搜索更多相关主题的帖子: 圆周率 
2008-11-02 20:40
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
得分:0 
我知道哪错了,我自己重新编写了一个绝对值函数,结果正确,为什么math.h头文件下的abs不行呢。正确为:
#include<iostream>
//#include<math.h>
using namespace std;

double arctan(double x);
double abs(double a);
int main()
{
    double a;
    double b;
    //double arctan(double x);
    a = 16.0 * arctan(1 / 5.0);
    b = 4.0 * arctan(1 / 239.0);
    cout<<"PI= "<<a-b<<endl;
    return 0;
}
double arctan(double x)
{
    double result = 0.0;
    double sqr = x * x;
    double num = x;//fenzi
    int den = 1;//fenmu
    double f = num / den;
    int flag = -1;
    while(abs(f) > 1e-15)
    {
        result += f;
        num = num * sqr * flag;
        den += 2;
        f = num / den;
    }
    return result;
}
double abs(double a)
{
    return a > 0 ? a : -a;
}
2008-11-02 20:56
tfg0116
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-10-9
收藏
得分:0 
换成fabs就ok了,呵呵
#include<iostream>
#include<math.h>
using namespace std;

double arctan(double x);
double abs(double a);
int main()
{
    double a;
    double b;
    //double arctan(double x);
    a = 16.0 * arctan(1 / 5.0);
    b = 4.0 * arctan(1 / 239.0);
    cout<<"PI= "<<a-b<<endl;
    return 0;
}
double arctan(double x)
{
    double result = 0.0;
    double sqr = x * x;
    double num = x;//fenzi
    int den = 1;//fenmu
    double f = num / den;
    int flag = -1;
    while(fabs(f) > 1e-15)
    {
        result += f;
        num = num * sqr * flag;
        den += 2;
        f = num / den;
    }
    return result;
}
//double abs(double a)
//{
//    return a > 0 ? a : -a;
//}
2008-11-02 21:00
快速回复:圆周率PI
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019606 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved