萌新求问关于一道课后作业的问题,精度和运行时长
小甲鱼给的答案是:3.1415926;我自己写的代码给出的结果是3.1415927,我想知道我这精度损失在哪里,而且为什么我的代码运行时间明显长于小甲鱼的代码运行时长,是哪一步比较耗时啊?
小甲鱼的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int sign = 1; // 表示符号
double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值
while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
{
pi = pi + term;
n = n + 2;
sign = -sign;
term = sign / n;
}
pi = pi * 4;
printf("pi = %10.7f\n", pi);
return 0;
}
我的代码是:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
double pi = 0, k = 1;
for (i = 1; k>=1e-8; i++)
{
pi = pi + pow(-1, i-1) / (2 * i - 1);
k = 1.0 / (2 * i - 1);
}
pi = 4 * pi;
printf("pi=%.7f\n",pi);
return 0;
}
pow函数的开销比较大 BngThea 发表于 2019-4-2 11:27
pow函数的开销比较大
多谢~那请问为什么我的结果在最后和小甲鱼的答案有略微不同,一个是3.1415926,一个是3.1415927,是哪一步损失了精度? lhy0320 发表于 2019-4-2 11:46
多谢~那请问为什么我的结果在最后和小甲鱼的答案有略微不同,一个是3.1415926,一个是3.1415927,是哪一 ...
可能是 k
但是一般来说除法精度都要比加减乘低
页:
[1]