本文共 932 字,大约阅读时间需要 3 分钟。
c语言 除法用float可以用 double就出错是怎么回事0
gi24362013.03.22浏览112次分享举报
#include "stdlib.h"
#include "stdio.h"
FILE *fp;
double *linspace(double,double,int);
int main(void){
double start,end;
int Npoint,i;
double *result;
printf("input start and end :!\n");
scanf(" %f %f",&start,&end);
printf("intput Npoint\n");
scanf(" %d",&Npoint);
result=linspace(start,end,Npoint);
if((fp=fopen("lin.dat","w"))==NULL){
printf("error when open the file lin.dat.\n");
return 1;
}
for(i=0;i
// printf("%f\n",result[i]);
fprintf(fp,"%f\n",result[i]);
}
free(result);
fclose(fp);
return 0;
}
double *linspace(double start,double end,int Npoint){
double *data;
double interval;
int i;
data=(double *)malloc(Npoint*sizeof(double));
interval=(end-start)/(Npoint-1);
printf("interval is %f\n",interval);
data[0]=start;
for(i=1;i
data[i]=data[i-1]+interval;
}
return data;
}
源程序如上,把double改成float就能正常运行,
我判断不正常的依据是 interval=(end-start)/(Npoint-1);
这个interval的输出结果不正确。
转载地址:https://blog.csdn.net/weixin_28926205/article/details/117024367 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!