c语言求Π的大小
#include<stdio.h>main()
{
int a , b ;
float c , sum , pi ;
for (a = 1 , b = 1 ; (float)(a/b) > 5e-4 ; a ++ , b = b + 2 )
{
c = 1 , sum = 0 ;
c = c * (float)(a/b) ;
sum = sum + c ;
}
pi = 2 * sum ;
printf ("%f\n" , pi) ;
}
输出的是2.000000,是我没把a/b转换成浮点型吗 没看懂你在根据什么公式求pi,
我只看出来:
1、你浮点数的类型转换方式错了,a/b已经等于0了,你再换算也只能等于0,你应该把括号去掉
2、如果转换方式写对了,那么你这就是个死循环,a/b永远大于1/2;
3、c永远等于a/b,sum也永远等于a/b,完全没看懂在干什么- int a , b ;
float c , sum , pi ;
c = 1 , sum = 0 ;
for (a = 1 , b = 1 ; ((float)a/b) > 0.5 ; a ++ , b = b + 2 )
{
c = c * ((float)a/b) ;
sum = sum + c ;
}
pi = 2 * sum ;
printf ("%f\n" , pi) ; #include <stdio.h>
#include <math.h>
int main(void)
{
unsigned long long n ;
double b , sum , pi ;
sum = 0.0 ;
b = 1.0 ;
for(n = 1 ; n < 1000000 ; n += 2) {
sum += b * (1.0 / pow(2 , n) + 1.0 / pow(3 , n)) / n ;
b = - b ;
}
pi = 4.0 * sum ;
printf("%.14lf\n" , pi) ;
}
Croper 发表于 2019-4-13 20:02
没看懂你在根据什么公式求pi,
我只看出来:
1、你浮点数的类型转换方式错了,a/b已经等于0了,你再换算 ...
嗯谢谢指教
公式是:π/2 = 1 + (1/3) + (1/3)*(2/5) + (1/3)*(2/5)*(3/7) + (1/3)*(2/5)*(3/7)*(4/9) + ...... #include <stdio.h>
int main(){
int a,b;
double pi;
double c=1,sum=1;
for (a=1,b=3;c>5e-4;a++,b+=2){
c*=(double)a/b;
sum+=c;
printf("sum=%f\n",sum);
}
pi=2*sum;
printf("%f\n",pi);
} Croper 发表于 2019-4-14 22:28
谢谢!!
页:
[1]