C++程序问题

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main( )
{
double piCurrent, piFormer;
int n;

n = 1;
piCurrent = (1.0/n)*4;

do {
piFormer = piCurrent;
n = n+2;
if ( ((n-1)/2)%2 == 0 )
piCurrent = piFormer + 4*1.0/n;
else
piCurrent = piFormer - 4*1.0/n;
} while (fabs(piCurrent-piFormer)>1.0E-6);

cout << "循环参数n = " << n << endl;
cout << fixed << setprecision(5);
cout << "PI = " << piCurrent << endl;

return 0;
}

求助大神~~~~
} while (fabs(piCurrent-piFormer)>1.0E-6);这里为什么是大于……
cout << fixed << setprecision(5);这一句好像没什么作用……

while (fabs(piCurrent-piFormer)>1.0E-6) 这个是判断循环的条件,意思是这两个数如果不相等的话就循环,浮点数判断两个数相等不能直接使用 == 运算符,要相减后判断其绝对值小于0.000001, 一般就认为它们是相等的了。

cout << fixed << setprecision(5) 中,fixed 表示使用小数计数法输出,setprecision 是将输出流对象设置精度为5, 会影响后面 cout 的调用对浮点数的输出追问

但是他是大于号-_-#

追答

大于号就表示这两个数还不相等,循环就继续执行,直到小于或等于,就表示两个数相等了,循环退出。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-17
在计算机中浮点数无法精确表示只要两个浮点数的差在我们定义的极小值之内 我们就认为他们是
相等的
cout << fixed << setprecision(5) 后面的两个是c++中的操控器 控制输出的格式 表示以小数输出

小数点后保留五位本回答被网友采纳
第2个回答  2014-04-17
fabs(piCurrent-piFormer)>1.0E-6相当于piCurrent!=piFormer.
相似回答