我正在快速报告中使用 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
给我错误:无效的浮点运算
我正在快速报告 4.11.4 中编写报告。低于 32 位操作系统,如果这有帮助。
再次感谢。
从你的编码来看,你似乎除以零!
-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 也为零,您最终会除以零。
一般来说,我总是会检查你的除数是否不为零!