c语言 除法用float可以用 double就出错是怎么回事

[复制链接]
查看11 | 回复1 | 2011-2-24 03:19:59 | 显示全部楼层 |阅读模式
#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\\\",
printf(\\\"intput Npoint\\\\n\\\");
scanf(\\\" %d\\\",
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;iNpoint;i){
// printf(\\\"%f\\\\n\\\",result);
fprintf(fp,\\\"%f\\\\n\\\",result);
}
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;iNpoint;i){
data=data[i-1] interval;
}
return data;
}
源程序如上,把double改成float就能正常运行,
我判断不正常的依据是 interval=(end-start)/(Npoint-1);
这个interval的输出结果不正确。
回复

使用道具 举报

千问 | 2011-2-24 03:19:59 | 显示全部楼层
<pre id=\\\"best-answer-content\\\" class=\\\"reply-text mb10\\\">吐血ing……

其实……

你把scanf和printf中的 %f 改成 %lf即可。

我还调试了半天…… C语言啊,还没毕业就忘光了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行