数据库中表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变量用什么类型比较好???
我在程序中取出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变量用什么类型比较好???
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;
I_T2 := StrToFloat(S_T2);你这样做并没有把字符串转换成浮点的类型而是:字符串-》浮点-》整形。所以值不可能为你想要的所以应该把I_T1和I_T2直接定义为浮点的类型double类型。
I_T1,I_T2: double;最好加上asfloat
I_T1:= FieldByName('monoy1').asfloat;
I_T2:= FieldByName('monoy2').asfloat;
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;
}