i:=0.00;
m:=0.00;
n:=0.00;
s:= FRONT_INDEX_DT.DataSet.FieldByName('PRODS_NO').AsString;
x:= FRONT_INDEX_DT.DataSet.FieldByName('TEAM_NO').AsString;
k:= FRONT_INDEX_DT.DataSet.FieldByName('EMP_NO').AsString;
lDataSet:=TCloneDataSet.Create(nil);
try
lDataSet.CloneCursor(FRONT_INDEX_DT.DataSet,false,true,false);
lDataSet.DisableControls;
lDataSet.First;
while not lDataSet.Eof do
begin
if (lDataSet.FieldByName('PRODS_NO').AsString=s) and (lDataSet.FieldByName('TEAM_NO').AsString=x) then
begin
i:=i+lDataSet.FieldByName('PLAN_AMT').AsFloat;
end;
if (lDataSet.FieldByName('TEAM_NO').AsString=x) and (lDataSet.FieldByName('EMP_NO').AsString=k) then
begin
n:=n+lDataSet.FieldByName('PLAN_AMT').AsFloat;
end;
lDataSet.Next;
end;
lDataSet.EnableControls;
finally
lDataSet.Free;
end;
代码就类似上面截取的部分,监视 i,m的值都很正常,但i-m的时候有时候会出现3.63797880709171E-12这样的值。'PLAN_AMT'在字典和表中都是数字类型,2位小数。用Business.System.Math.SimpleRoundTo(,-2)处理i,m后还是一样出现这样的问题。
这个问题怎么解决??急 |