鱼C论坛

 找回密码
 立即注册
查看: 3140|回复: 6

求π的问题。

[复制链接]
发表于 2012-6-6 16:33:14 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
//π/4 = 1 -1/3 + 1/5 - 1/7 + 1/9 ........

#include <math.h>
void main()
{
int n;           //n代表分母                             
float pi,i,s;  //s 代表分子 1 或者是-1
pi = 1;        //初始化pi的值为1
s = 1.0;        //初始化s的值为1.0
for (n=3;;n=n+2)  //循环初始化n的值为 3
{
  s = -s;                      //每次循环s的值变为 -1 或者 1
  i = s/n;                    
  pi = pi + i;
  if (fabs(pi)>(1e-6))    //确定精度,超过精度退出循环
   break;
  
}
pi = pi*4;
printf("pi=%10.6f\n",pi);
}
得出结果为2.66667.不知道那里出错~!!!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 16:35:12 | 显示全部楼层
我刚才调试了一下,不管怎么样,当程序运行到
if (fabs(pi)>(1e-6))    //确定精度,超过精度退出循环
   break;
这里的时候就会跳出循环,不明白,求解~!!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 17:06:18 | 显示全部楼层
if 语句 判定退出for循环的条件应该为 fabs(i<1e-6)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 17:08:59 | 显示全部楼层
(1e-6)是10^-6,最开始就大于了吧
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 17:09:31 | 显示全部楼层
pi=1;
这条语句 也欠佳;
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 17:13:31 | 显示全部楼层
  1. #include <stdio.h>
  2. //π/4 = 1 -1/3 + 1/5 - 1/7 + 1/9 ........

  3. #include <math.h>
  4. int main()
  5. {
  6. int n;           //n代表分母                             
  7. double pi,i,s;  //s 代表分子 1 或者是-1
  8. pi = 1;        //初始化pi的值为1
  9. s = 1.0;        //初始化s的值为1.0
  10. for (n=3;;n=n+2)  //循环初始化n的值为 3
  11. {
  12.   s = -s;                      //每次循环s的值变为 -1 或者 1
  13.   i = s/n;                    
  14.   pi = pi + i;
  15.   if (fabs(s/n)<(1e-8))    //确定精度,超过精度退出循环 10^-6次方精度不够
  16.    break;
  17.   
  18. }
  19. pi = pi*4;
  20. printf("pi=%.6lf\n",pi);
  21. while(1);
  22. return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 17:15:01 | 显示全部楼层
谢谢,已经搞明白。逻辑错误,另外问以下,为什么说PI=1;语句欠佳,刚开始学,不明白~!麻烦楼上的再帮回答下~!
再次感谢~!!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-13 16:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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