procedure Tacc.Button1Click(Sender: TObject);
        var
     k: double;
     nn: integer;
     i: integer;
     m: double;
     ss: integer;
     begin
       ADOTable5.First;
       for i:=1 to  ADOTable5.RecordCount
      do begin
       //k:=strTofloat(ADOTable5.FieldByname('l_price').asstring);     
      //m:=m+k;
            begin
            nn:=strToint(ADOTable5.FieldByname('sale').asstring);
        
         ss:=ss+nn;
         end;        ADOTable5.Next;
        end;
      edit1.text:=floatTostr(ss); 
    //edit2.text:=floatTostr(m);
      ADOTable5.First;
      end;end.
为什么上面的代码将k、m定义的double改为integer可以正常计算,换为double,mm的计算结果就是另一个值?
同样将以上代码的注释部分去掉注释计算结果也是另一个值,加上注释后,ss的计算结果正常,这是咋怎么回事啊???

解决方案 »

  1.   

    不是误差啊,结果是天壤之别啊!!当K=36、15时,s的结果是51,
    nn=5、3时,ss的结果是1.4729840438428E269
      

  2.   

    1. 你的代码中, ss的计算和k、m根本没有任何关系;
    2. nn:=strToint(ADOTable5.FieldByname('sale').asstring); 可改成 nn:=ADOTable5.FieldByname('sale').AsInteger;k:=strTofloat(ADOTable5.FieldByname('l_price').asstring 可改成 k:=ADOTable5.FieldByname('l_price').AsFloat;