数据库中表table1中子段monoy1和monoy2的数据类型是Numeric类型,精度为20,小数点为数为4.
我在程序中取出monoy1和monoy2时用的是字符串形式,monoy1=1.4444,monoy2=-6.0,
可是取出之后将其转换为浮点型时I_T1=0,而I_T2=-6.
我使用的是SqlServer2000+Delphi6.0,程序代码如下:
var S_T1,S_T2 : String;
    I_T1,I_T2 : integer;
Procedure ss.tt()
{
  with ADOQuery1 do
  begin
    Close;
    Sql.Clear();
    Sql.Add('select*From table1 where qq=12');
    Close;
    S_T1 := FieldByName('monoy1');
    S_T2 := FieldByName('monoy2');
    I_T1 := StrToFloat(S_T1);
    I_T2 := StrToFloat(S_T2);
  end;
}
我的问题是:
我想用I_T1,I_T2变量进行加减运算
(1)我用什么函数转换字符串???
(2)我的I_T1,I_T2变量用什么类型比较好???

解决方案 »

  1.   

    var S_T1,S_T2 : Double; //用Double型就行了。
    Procedure tt()
    begin
      with ADOQuery1 do
      begin
        Close;
        Sql.Clear();
        Sql.Add('select*From table1 where qq=12');
        Close;
        S_T1 := FieldByName('monoy1');
        S_T2 := FieldByName('monoy2');
      end;
    end;
      

  2.   

    I_T1 := StrToFloat(S_T1);
    I_T2 := StrToFloat(S_T2);你这样做并没有把字符串转换成浮点的类型而是:字符串-》浮点-》整形。所以值不可能为你想要的所以应该把I_T1和I_T2直接定义为浮点的类型double类型。
      

  3.   

    var
    I_T1,I_T2: double;最好加上asfloat
    I_T1:= FieldByName('monoy1').asfloat;
    I_T2:= FieldByName('monoy2').asfloat;
      

  4.   

    var I_T1,I_T2 : double;
    Procedure ss.tt()
    {
      with ADOQuery1 do
      begin
        Close;
        Sql.Clear();
        Sql.Add('select*From table1 where qq=12');
        Close;
    //    S_T1 := FieldByName('monoy1');//不需要,没有必要做中间的转换
    //    S_T2 := FieldByName('monoy2');//不需要
    //    I_T1 := StrToFloat(S_T1);
    //    I_T2 := StrToFloat(S_T2);
        I_T1 := FieldByName('memoy1').AsFloat;
        I_T2 := FieldByName('memoy2').AsFloat;
     
      end;
    }