浮点数错误:溢出

buptcuky 2003-09-17 11:10:10
我的一个C程序编译和连接都没问题,但是在运行时报错:
floating point error: overflow
请问可能时什么原因导致的呢
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
buptcuky 2003-09-17
  • 打赏
  • 举报
回复
我把主函数也贴出来吧#include "stdio.h"
#define Lc 7000
#define N 10
main()
{ void clms();
FILE * fp;
int j;
double r[Lc],new1[Lc],u=0.0001;
if((fp=fopen("d:\\tools\\data.bin","rb"))==NULL)
{
printf("cannot open this file!\n");
exit(0);
}
fread(r,8,Lc,fp);
fclose(fp);
for(j=0;j<10;j++)
{
printf("%f\n",r[j]);
}
clms(r,new1,u);

return;
}
buptcuky 2003-09-17
  • 打赏
  • 举报
回复
这是一个自适应滤波器的程序
是不是形参定义的时候,如果前面是用数组名,后面就不能直接用维数啦?
dddd8888 2003-09-17
  • 打赏
  • 举报
回复
void clms(x,y,delta)
double x[Lc],y[Lc],delta;
{
...
}
这是什么意思
ghostmirror 2003-09-17
  • 打赏
  • 举报
回复
bupt????
我也是哦~~呵呵
这种问题你最好把代码贴出来的啊~:)
buptcuky 2003-09-17
  • 打赏
  • 举报
回复
#define Lc 8000
#define N 10
void clms(x,y,delta)
double x[Lc],y[Lc],delta;
{
double h[N],x1[N];
int i,j,k;
double power,temp,e,pk=5.0;
for(i=0;i<N;i++);
{
h[i]=0;
x1[i]=0;
}
for(i=0;i<Lc;i++)
{
temp=0;
power=0;
for(j=0;j<N;j++)
{
temp=temp+h[j]*x1[j];
power=power+x1[j]*x1[j];
}
e=x[i]-temp;
y[i]=e;
pk=pk+delta*(power-pk);
for(k=N-1;k>-1;k--)
{
h[k]=h[k]+delta*e*x1[k]/pk;
if(k>0) x1[k]=x1[k-1];
}
x1[0]=x[i];
}
}
Yssss1980 2003-09-17
  • 打赏
  • 举报
回复
你是怎么提问的???

郁闷,浪费我的时间
TongNi 2003-09-17
  • 打赏
  • 举报
回复
你把程序打出来哟!!!!
buptcuky 2003-09-17
  • 打赏
  • 举报
回复
多谢,楼上的几位兄弟,我找到了一处导致溢出的原因,
for(i=0;i<N;i++);
{
h[i]=0;
x1[i]=0;
}
就是for后面那个分号造成的,把它去掉就可以了
但是在运行的过程中还是出现了溢出错误
palyboyxp说的有道理,我想可以采用读一次文件的8个字节,然后计算一次来解决内存浪费的问题
playboyxp 2003-09-17
  • 打赏
  • 举报
回复
肯能是你的数组太大了
没有足够得内存造成得

69,340

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧