请问这两个程序有什么不一样呢(S1E16)?
#include <stdio.h>#include <math.h>
int main(void)
{
int i;
int j = 1;
double result = 1;
long double answer = 0;
for (j = 1;result >= 1e-8; j++)
{
result = 1.0/(2 * (double)j - 1);
//printf("%.8f\n",result);
if (j % 2)
i = 1;
else
i = -1;
answer += i * result;
}
printf("PI的近似值是%9.7f",answer * 4);
return 0;
}
#include <stdio.h>
int main()
{
int i;
double result = 0;
double last =1;
int n;
for(n = 1;last >= 1e-8; n++ )
{
if(n % 2)
{
i = 1;
}
else
{
i = -1;
}
result = result + i * (1 / (2 * (double)n - 1));
last = (1 / (2 * (double)n - 1));
}
printf("%9.7f",result * 4);
return 0;
}
怎么结果完全不一样? #include <stdio.h>
#include <math.h>
int main(void)
{
int i;
int j = 1;
double result = 1;
long double answer = 0;
for (j = 1;result >= 1e-8; j++)
{
result = 1.0/(2 * (double)j - 1);
//printf("%.8f\n",result);
if (j % 2)
i = 1;
else
i = -1;
answer += i * result;
}
//printf("PI的近似值是%9.7f",answer * 4);
printf("PI的近似值是%9.7Lf\n",answer * 4);
return 0;
}
定义的精度不同一个是 long double 一个是double 村里小黑 发表于 2021-10-21 09:07
定义的精度不同一个是 long double 一个是double
所以为什么精度差别这么大呢(一个是0.000,另一个是3.14)? 人造人 发表于 2021-10-21 12:52
哦,傻了{:9_229:} 人造人 发表于 2021-10-20 21:20
诶,这个好像也不行 人造人 发表于 2021-10-20 21:20
只有两个为double才行 飞花落尽 发表于 2021-10-21 13:01
只有两个为double才行
? 人造人 发表于 2021-10-21 13:24
?
你那个程序运行出来还是0 飞花落尽 发表于 2021-10-21 14:50
你那个程序运行出来还是0
看看这个输出什么
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
printf("%lu\n", sizeof(double));
printf("%lu\n", sizeof(long double));
exit(0);
int i;
int j = 1;
double result = 1;
long double answer = 0;
for (j = 1;result >= 1e-8; j++)
{
result = 1.0/(2 * (double)j - 1);
//printf("%.8f\n",result);
if (j % 2)
i = 1;
else
i = -1;
answer += i * result;
}
//printf("PI的近似值是%9.7f",answer * 4);
printf("PI的近似值是%9.7Lf\n",answer * 4);
return 0;
}
人造人 发表于 2021-10-21 14:52
看看这个输出什么
8
16
然后,这个程序输出 0 是吗?
贴个图片看看
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int i;
int j = 1;
double result = 1;
long double answer = 0;
for (j = 1;result >= 1e-8; j++)
{
result = 1.0/(2 * (double)j - 1);
//printf("%.8f\n",result);
if (j % 2)
i = 1;
else
i = -1;
answer += i * result;
}
//printf("PI的近似值是%9.7f",answer * 4);
printf("PI的近似值是%9.7Lf\n",answer * 4);
return 0;
}
人造人 发表于 2021-10-21 15:18
然后,这个程序输出 0 是吗?
贴个图片看看
PI的近似值是0.0000000
--------------------------------
Process exited after 0.6471 seconds with return value 0
请按任意键继续. .
结果真的是这个 人造人 发表于 2021-10-21 15:18
然后,这个程序输出 0 是吗?
贴个图片看看
代码我复制粘贴的 飞花落尽 发表于 2021-10-21 20:31
代码我复制粘贴的
我看看
qq: 1440332527
人造人 发表于 2021-10-21 20:36
我看看
qq: 1440332527
加了 人造人 发表于 2021-10-21 20:36
我看看
qq: 1440332527
在吗?
页:
[1]