C语言求Π的近似值的问题
本帖最后由 肖-肖 于 2021-4-16 17:58 编辑我的问题是为什么输出的是:5.135300
我感觉我写的没错啊,代码如下
/**编写程序,根据以下公式求Π的近似值,要求累加到某项小于1e-6次方时为止
Π/2=1 + 1/3 + 1*2/3*5 + 1*2*3*4/3*5*7*9 + ......+ 1*2*...*n/3*5*...*(2n+1)
*/
#include <stdio.h>
int main()
{
float i,j,n,m,pi;//i:分子 j:分母
n=1.0;m=1.0;i=1.0;j=1.0;pi=0.0;
while(n/m>=exp(-6))
{
pi+=n/m;//求和
i++;
j=j+2;
n=n*i;
m=m*j;
}
pi=pi*2;
printf("%f",pi);
return 0;
}
请帮我分析一波,谢谢,尽可能详细点~~~ 第二次循环貌似不对吧
期望1/3 你的貌似2/3 第二次循环,i变成2,m变成3,加成了2/3而不是1/3 wp231957 发表于 2021-4-16 21:54
第二次循环貌似不对吧
期望1/3 你的貌似2/3
嗯 我把i的初值改为了0.0
结果是: 3.137130
和: 3.1415926
差不多了,这么改行吧,应该没什么么问题了吧~ 题目的意思是 到某项小于 1e-6 为止,但是第一个小于1e-6的项还是要的
int main()
{
double pi = 1.0; //第一项 为1
double cur = 0.0; //当前项
int i = 1; //分子
int j = 2 * i + 1;; //分母
double up = 1; //计算后的分子
double down = 1; //计算后的分母
do
{
up *= i;
down *= j;
cur = up / down;
pi += cur;
i++;
j = 2 * i + 1;
} while (cur >= 1e-6);
printf("%lf\n", 2 * pi);
return(0);
}
结果
页:
[1]