C求助!小甲鱼作业—求Π的近似值
题目如下:根据以下已知公式求 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?这样岂不是把原来的13579 变成了1591317?
再者,你的循环次数太少了,求得的结果离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);
} sunrise085 发表于 2020-9-25 14:24
if那里已经把偶数排除了,为什么在if模块里面还要写一个denominator?这样岂不是把原来的13579 变 ...
哦哦,但是为什么像这样计算无论增加多少项小数点第6位都不能精确,这是为什么呢?C:\Users\Administrator\Desktop\CP6P)_F4O2MFA_EGM@_V2{W.png Jacksturdy 发表于 2020-9-25 18:43
哦哦,但是为什么像这样计算无论增加多少项小数点第6位都不能精确,这是为什么呢?
你把float都改为double,把int改为long就可以了
页:
[1]