|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:根据以下已知公式求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)。
提示1:分子永远都是1;
提示2:后一项的分母是前一项的分母加2;
提示3:可以通过i = -i实现符号取反的效果;
提示4:要正确计算出小数点后前 7 位数,最后一项的绝对值需要小于 10^(-8) 才行(该项不累加);
提示5:求某数的绝对值可以使用 fabs 函数(函数快查:fabs – 求绝对值)
下方代码为答案
疑问:n我把它设为int类型,第一轮循环term直接等于0(不应该自动转换为浮点类型吗)为什么n作为分母是个整数,不能设为int类型。
是不是以后碰到分母类型题目就要把分子分母设置为浮点类型?
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int sign = 1; // 表示符号
- double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值
- while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
- {
- pi = pi + term;
- n = n + 2;
- sign = -sign;
- term = sign / n;
- }
- pi = pi * 4;
- printf("pi = %10.7f\n", pi);
- return 0;
- }
复制代码
本帖最后由 jhanker 于 2021-8-22 15:34 编辑
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int sign = 1, n = 1; // 表示符号
- double pi = 0.0, term = 1.0; // n表示分母,term表示当前项的值
- while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
- {
- pi = pi + term;
- n = n + 2;
- sign = -sign;
- term =(double)sign / n; //强制转换试试
- }
- pi = pi * 4;
- printf("pi = %10.7f\n", pi);
- return 0;
- }
复制代码
|
|