首页 > 代码库 > 近似运算
近似运算
计算兀/4=1-1/3+1/5-1/7+……,直至最后一项小于10的-6次方。
错误做法:
#include<stdio.h>#include<math.h>int main(){ int i; double t,m; m=3.14159/4.0; for(i=1;;i++) { if(i%2==0) t=(double)-(1/(2*i-1));//括号里面的运算还是整数之间的,得不到double型,强制转换加错地方了 else t=(double)1/(i*2-1); while(fabs(t)>(1E-6))//主要问题在这里,你第一次t肯定很大进到这里来一直while出不去所以死循环了 { m+=t; } break; } printf("%lf\n",m);//对于double型,scanf里面写%lf,printf里面写%f比较合适//可以把m初始化为0然后这么加完乘以4得到的应该就是pi的值了,现在这么加结果无意义 return 0;}
正确:
#include<stdio.h>#include<math.h>int main(){ int i; double t,m; m=0; for(i=1;;i++) { if(i%2==0) t=-(1.0/(2*i-1)); else t=1.0/(i*2-1); if(fabs(t)>(1E-6)) { m+=t; } else break; } printf("%f\n",m*4); return 0;}
希望还有更好的方法提供……
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。