无效的浮点运算Pascal

时间:2016-03-11 16:54:31

标签: pascal freepascal pascalscript fastreport

我在快速报道中使用Pascal编写程序,当我尝试显示除法的结果时出现问题。这是我的计划:

var
relec_tp_for_pa, tp_for_pa, relec_tt_tp, total_tp, coef_relec : Real = 0;
relec_vt : Integer = 0;

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);               
begin

if ( ( <EJobsQuery."SERV_ID"> = 54 ) )  then        
   begin
       relec_tp_for_pa := tp_for_pa;                                      
       relec_vt := relec_vt + <EJobsQuery."EJOB_VOLUME">;                                      
       relec_tt_tp := relec_tt_tp + tp;
       total_tp := total_tp + tp;
   end;

coef_relec := StrToFloat(FormatFloat('0.0000', relec_tt_tp / total_tp));

relec_pa.Text := FormatFloat('0.00', relec_vt /(relec_tp_for_pa * coef_relec));                
relec_pr.Text := FloatToStr( relec_vt / relec_tt_tp );                 

end;

这两个部门:
-relec_vt /(relec_tp_for_pa * coef_relec)
-relec_vt / relec_tt_tp
给我错误:无效的浮点运算

我在FastReport 4.11.4中编写了一份报告。 在32位操作系统下,如果这可以帮助。

再次感谢。

1 个答案:

答案 0 :(得分:4)

根据您编码的内容,您似乎除以零!

  

-relec_vt /(relec_tp_for_pa * coef_relec)

     

-relec_vt / relec_tt_tp

relec_tp_for_pa := tp_for_pa

绝对是零!

relec_tp_for_pa * coef_relec 

也将为零!

对于relec_tt_tp,我可以尝试猜测,因为此代码不是一个完整的示例。

total_tp := total_tp + tp

total_tp为零,如果tp也为零,你的分数最后为零。

一般情况下,我总是会检查你的除数是否为零!