鱼C论坛

 找回密码
 立即注册
查看: 1993|回复: 5

大家帮忙看看哪里错了?

[复制链接]
发表于 2011-11-2 16:41:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. /*其中arctan用如下形式的级数计算:
  2. Arctan(x)=x-x^3/3+x^5/5-x^7/7+....
  3. 直到级数某项绝对值不大于10^(-15)为止;π和x均为double型。*/
  4. #include<iostream.h>
  5. #include<math.h>
  6. void main()
  7. {
  8.    double a,b;
  9.    double arctan(double x);
  10.    a=16.0*arctan(1/5.0);
  11.    b=4.0*arctan(1/239.0);
  12.    //注意:因为整数相除结果取整,
  13.    //如果参数写1/5,1/239,结果就都是0
  14.    cout<<"PI="<<a-b<<endl;
  15. }
  16. double arctan(double x)
  17. {
  18.    int i,flag;
  19.    double r,e,f,sqr;
  20.    sqr=x*x;
  21.    r=0;e=x;i=1;flag=-1;f=e/i;
  22.    while (abs(f)>1e-15)
  23.    {
  24.       r=r+f;
  25.           e=e*sqr*flag;
  26.           i+=2;
  27.           f=e/i;
  28.    }
  29.    return r;
  30. }
复制代码
这是求π值的,为什么运行结果PI=0?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-2 17:34:36 | 显示全部楼层
while (abs(f)>1e-15)
改为while (fabs(f)>1e-15)

abs是对整数求绝对值的,fabs对double求绝对值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-2 17:34:36 | 显示全部楼层
C++不会飘过、  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-2 18:06:37 | 显示全部楼层
顶二楼。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-11-2 18:09:25 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-3 17:21:05 | 显示全部楼层
我得到3.14159,这个是对的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 00:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表