程序出错:invalid floating point operation,怎么办? ( 积分: 200 )

  • 主题发起人 主题发起人 小小峰
  • 开始时间 开始时间

小小峰

Unregistered / Unconfirmed
GUEST, unregistred user!
程序在运行时出错:"invalid floating point operation", 跟踪时发现出错行是
WW2:=2.*b*9.81*c*power(a/9.81/h0,1./b)*power(vx*vx,1./b-1);
怎么办?
 
没遇到过这样的总是,帮项!
 
出错行位于下列过程中:

procedure WWWW(var WW:real;DC:real;WNK:real;FRE:real;H0:real;DK:real;CF:real;
rafr:real;v0:real);
var
ww1,ww2,a,b,c,vx :extended;
begin
WW1:=0.043263322*CF*H0*
power((FRE/WNK/(EXP(WNK*DC)*EXP(WNK*DC)-1)*EXP(WNK*DC)*2.*DK),3);
a:=0.0055;
b:=0.35;
c:=FRE/WNK;
VX:=V0*COS(RAFR)-C;
WW2:=2.*b*9.81*c*power(a/9.81/h0,1./b)*power(vx*vx,1./b-1);
ww:=ww1-ww2;
END;
 
你应该加上判断,
if (b=1)or(b=0)or(h0=0) then
begin
//分母为0,返回错误信息。
exit;
end;
WW2:=2.*b*9.81*c*power(a/9.81/h0,1./b)*power(vx*vx,1./b-1);
ww:=ww1-ww2;
 
非法浮点数操作,一般是除数为0造成的。
 
调试下,看有没有除0或者数据范围溢出。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部