一个很简单的问题,请大家教我!!!
用下列公式计算"派"(我找不到该符号)的值:
派/4 = 1 - 1/3 + 1/5 - 1/7 + ... ± 1/n (精度要求为|1/n| < 10 ^ -4)
书上给出该题的代码为:
#include "stdio.h"
main()
{
float pi = 0.0, n = 1.0, s = 1.0, t;
do{
t = s / n;
pi += t;
s *= -1.0;
n += 2;
}while(fabs(t) >= 1e-4);
printf("pi = %f\n", 4 * pi);
}
程序要求的精度为|1/n| < 10 ^ -4,可为什么在do-while的条件部分却是fabs(t) >= 1e-4,为什么不写成程序要求的fabs(t) < 1e-4呢?请各位详细回答,谢谢!!!
问题点数:0、回复次数:1Top
1 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2003-09-01 08:39:25 得分 0
不用详细的回答,是因为
do{
}
while()
结构就是等着让括号中的东西为false的时候退出的
那么在循环开始的一段内,t一直比1e-4大对吧,知道t比1e-4小了,就是说精度差不多了
就应该退出了
你要知道|1/n| < 10 ^ -4,可不是说|1/n|应该一直小于10 ^ -4而是|1/n|达到了那个精度才对
如果你要那么写,就应该
#include<stdio.h>
#include<math.h>
main()
{
float pi = 0.0, n = 1.0, s = 1.0, t;
do{
t = s / n;
pi += t;
s *= -1.0;
n += 2;
}while(!(fabs(t) <= 1e-4));
printf("pi = %f\n", 4 * pi);
}
这么写就行了Top



