|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如下:根据以下已知公式求 Pi 的近似值,要求正确计算出小数点后前 7 位(即3.1415926)
我的代码是
#include<stdio.h>
int main(){
int term,denominator;//项数 ,分母
float sign=1.0;//分子
float pi = 0.0;
for(term=0;term<7;term++){
if(term%2) {//这里面表示奇数项
denominator=2*term-1;
pi = pi+(sign/denominator);
sign = -sign;
}
}
pi = pi*4.0;
printf("pi的近似值为%10.7f",pi);
}
为什么我的结果是3.6几?
得不到3.1415926呢?
求大佬帮忙啊!!!
本帖最后由 sunrise085 于 2020-9-25 14:26 编辑
if那里已经把偶数排除了,为什么在if模块里面还要写一个denominator?这样岂不是把原来的1 3 5 7 9 变成了1 5 9 13 17?
再者,你的循环次数太少了,求得的结果离3.14太远了,计算700000项的时候,才精确到小数点后5位数
- #include<stdio.h>
- int main(){
- int term,denominator;//项数 ,分母
- float sign=1.0;//分子
- float pi = 0.0;
- for(term=0;term<700000;term++){
- denominator=2*term+1;//这里面表示奇数项
- pi = pi+(sign/denominator);
- sign = -sign;
- }
- pi = pi*4.0;
- printf("pi的近似值为%10.7f",pi);
- }
复制代码
|
|