S1E16求pi近似值
#include<stdio.h>#include<math.h>
int main(){
double result=0,num=1;
float i;
for(i=1;i>=1;i++){
num=1/(2*i-1);
if(fabs(num)>= 1e-8){
result=result+num*pow(-1,i+1);
}
else if (fabs(num)<1e-8){
break;
}
}
printf("%.7f",result*4);
getchar();
return 0;
}
为啥会没有输出呢 公式是啥 有可能是计算过程太繁琐了,程序崩溃了没有结果,我之前做第一阶段考核题几个题代码对的程序都崩了{:10_269:}{:10_269:}试试把它简化一下吧{:10_257:} 本帖最后由 负数零 于 2021-10-12 21:58 编辑
把float i换成double i,后面i也参与了除法,用float精度不够,换成double i就可以运行了 本帖最后由 傻眼貓咪 于 2021-10-12 10:13 编辑
#include <stdio.h>
#include <math.h>
int main(){
int s = 1;
double pi = 0, n = 1, t = 1; // 精度换成 double
while(fabs(t)>1e-8){
pi += t;
n += 2;
s = -s;
t = s/n;
}
pi *= 4;
printf("pi = %10.8f", pi);
return 0;
}pi = 3.14159263 本帖最后由 负数零 于 2021-10-12 19:14 编辑
. wp231957 发表于 2021-10-12 06:47
公式是啥
公式是
pi/4=1-1/3+1/5-1/7+1/9.....
要求最后一个数要小于10^-8但该数不参与运算 负数零 发表于 2021-10-12 09:36
把float i换成double i,后面i也参与了除法,用float精度不够,换成double i就可以运行了
{:10_257:}有输出了,就是太久了估计会超时 傻眼貓咪 发表于 2021-10-12 09:40
for循环比while循环用时要久,这是为什么呢{:10_272:} C++太极门小弟子 发表于 2021-10-12 23:24
for循环比while循环用时要久,这是为什么呢
这东西就不能用for循环 C++太极门小弟子 发表于 2021-10-12 23:23
有输出了,就是太久了估计会超时
你都用pow函数了,它算的能不慢吗,循环一次算一次 C++太极门小弟子 发表于 2021-10-12 23:24
for循环比while循环用时要久,这是为什么呢
执行时间长短应该和 for 和 while 没有关系 负数零 发表于 2021-10-13 07:15
你都用pow函数了,它算的能不慢吗,循环一次算一次
{:10_262:}好吧
页:
[1]