|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 肖-肖 于 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;
- }
复制代码
请帮我分析一波,谢谢,尽可能详细点~~~
题目的意思是 到某项小于 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);
- }
复制代码
结果
|
|