C语言 为什么以下函数 输出结果不同

来源:百度知道 编辑:UC知道 时间:2024/05/05 04:19:57
#include "stdio.h"
#include "math.h"
main()
{
float y;
int x,n;
y=1;
while(y>=-1)
{

n=acos(y)*10;
for(x=0;x<n;x++)
printf(" ");
printf("*");
for(;x<62-n;x++)
printf(" ");
printf("*%d %lf\n",n,y);

}

getchar();
}

#include "stdio.h"
#include "math.h"
main()
{
doulbe y;
int x,n;
y=1;
while(y>=-1)
{

n=acos(y)*10;
for(x=0;x<n;x++)
printf(" ");
printf("*");
for(;x<62-n;x++)
printf(&quo

2个代码 完全一样啊 应该输出相同吧

第一个函数的y是float, 第二个函数的y则是double
double是双精度型, 比float, 单精度型存的数据更准确些,占的空间也更大
于是内部储存的数据会有轻微差距
当运算时间过长时会导致这个差距越大, 于是最后答案会不一样

我是这样认为的

doulbe y; --改 double y;

一样是死循环.