我只知道strtofloat可以把string类型的转换成float型的。
22 个解决方案
#1
强制类型转换:Integer(DoubleValue);
不过似乎无实际意义。
可以用函数去尾或四舍五入
不过似乎无实际意义。
可以用函数去尾或四舍五入
#2
抱歉: 强制类型转换:Integer(DoubleValue); 不能用。说一下你想得到什么效果。或者你直接用函数,去尾或四舍五入。
#3
比如i是各int型的,temp1是个double型的数组,现在我要把temp1中的数据赋值给i,我要怎么写?
用函数去尾也可以啊,不过有没有直接的函数可以去尾啊?
用函数去尾也可以啊,不过有没有直接的函数可以去尾啊?
#4
I := Trunc(Temp1[下标]);//去尾
I := Round(Temp1[下标]);//四舍五入
I := Round(Temp1[下标]);//四舍五入
#5
发现执行程序时有错误,我原程序中其实是在一个SQL语言中用到
SQL是这样的,
SQL.ADD('update FXSJ set RXSP=1 where ZYID=Trunc(fx[i,0])');
ZYID是个int型的,fx[i,0]是个double型的数据,但是系统报错是“i,0附近有语法错误”,请达人帮我看看错在哪里啊?谢谢!
SQL是这样的,
SQL.ADD('update FXSJ set RXSP=1 where ZYID=Trunc(fx[i,0])');
ZYID是个int型的,fx[i,0]是个double型的数据,但是系统报错是“i,0附近有语法错误”,请达人帮我看看错在哪里啊?谢谢!
#6
呵.....你不能把Trunc(fx[i,0])放在SQL语句外面啊?
SQL.ADD(Format('update FXSJ set RXSP=1 where ZYID=%d',[Trunc(fx[i,0])]));
SQL.ADD(Format('update FXSJ set RXSP=1 where ZYID=%d',[Trunc(fx[i,0])]));
#7
还是不行啊,编译通不过,报错了
[Error] Unit1.pas(250): Too many actual parameters
[Error] Unit1.pas(250): Too many actual parameters
#8
你确定fx是一个二维数组吗?
#9
是啊,我定义的是fx:array of array of double;
#10
把代码整个地全部地贴出来。
#11
for i:=0 to m-1 do
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('#.###',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('#.###',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('#.###',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('#.###',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('#.###',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('#.###',fx[i,6]));
SQL.Add(' where ZYID=fx[i,0]');
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select NJ, XY, ZY,');
SQL.Add('RXSP, ZXCJ, BYSP,');
SQL.Add('ZGPJ, YHPJ, ZLPJ from FXSJ');
Open;
end;
全部的代码很长,以上是这一部分的,怀疑就是where ZYID=fx[i,0]出现错误了,如果把这一句换成where ZYID=1 就可以的。
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('#.###',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('#.###',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('#.###',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('#.###',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('#.###',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('#.###',fx[i,6]));
SQL.Add(' where ZYID=fx[i,0]');
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select NJ, XY, ZY,');
SQL.Add('RXSP, ZXCJ, BYSP,');
SQL.Add('ZGPJ, YHPJ, ZLPJ from FXSJ');
Open;
end;
全部的代码很长,以上是这一部分的,怀疑就是where ZYID=fx[i,0]出现错误了,如果把这一句换成where ZYID=1 就可以的。
#12
你不是说RXSP是整型的字段吗?干嘛又用FormatFloat?FormatFloat返回带小数点的。
#13
并且,你把fx直接放到SQL语句中,你希望SQLServer知道你的fx是什么东东?
#14
之前的RXSP是个int型的,我只是打了个比方。
上面的一带代码中除了ZYID是个int型的,其他几个都是float型的。
我就是怀疑where这句错误了,可是我不知道怎么写闹。
比如fx[i,0]的值为1,我希望SQLServer查询到ZYID值为1的那一组记录
上面的一带代码中除了ZYID是个int型的,其他几个都是float型的。
我就是怀疑where这句错误了,可是我不知道怎么写闹。
比如fx[i,0]的值为1,我希望SQLServer查询到ZYID值为1的那一组记录
#15
试一下:
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('0',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('0',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('0',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('0',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('0',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('0',fx[i,6]));
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
ExecSQL;
用Format也可以,用FormatFloat也可以,还有其它函数可以用。不过要用得正确。
上面是假设你的上述字段都是整型
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('0',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('0',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('0',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('0',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('0',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('0',fx[i,6]));
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
ExecSQL;
用Format也可以,用FormatFloat也可以,还有其它函数可以用。不过要用得正确。
上面是假设你的上述字段都是整型
#16
哦,那你就只把
SQL.Add(' where ZYID=fx[i,0]');
这句,改为:
SQL.Add(' where ZYID='+ FormatFloat('0',fx[i,0]));//进位
或者:
SQL.ADD(Format(' where ZYID=%d',[Trunc(fx[i,0])]));//去尾。这个写法前面早已说过了
SQL.Add(' where ZYID=fx[i,0]');
这句,改为:
SQL.Add(' where ZYID='+ FormatFloat('0',fx[i,0]));//进位
或者:
SQL.ADD(Format(' where ZYID=%d',[Trunc(fx[i,0])]));//去尾。这个写法前面早已说过了
#17
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
这样写是对的,可以实现了,呵呵,谢谢啊!
不过还有一个问题,就是我要把RXSP返回带3个小数点的值要怎么样实现啊,我原来的语句‘set RXSP='+FormatFloat('#.###',fx[i,1]));好像还是返回一个不带小数点的,奇怪!
这样写是对的,可以实现了,呵呵,谢谢啊!
不过还有一个问题,就是我要把RXSP返回带3个小数点的值要怎么样实现啊,我原来的语句‘set RXSP='+FormatFloat('#.###',fx[i,1]));好像还是返回一个不带小数点的,奇怪!
#18
formatfloat('0.000',fx[i,1])
加分,结贴!(十分太少了!差点让你晕死呢)
加分,结贴!(十分太少了!差点让你晕死呢)
#19
formatfloat('0.000',fx[i,1])也不行啊,而且这个和我用#不是一样的吗?
#20
一样。
你试一下,是不是你要的效果
procedure TForm1.Button1Click(Sender: TObject);
var
x: double;
begin
x := 98.12345678;
showmessage(formatfloat('0.000',x));//98.123
end;
你试一下,是不是你要的效果
procedure TForm1.Button1Click(Sender: TObject);
var
x: double;
begin
x := 98.12345678;
showmessage(formatfloat('0.000',x));//98.123
end;
#21
哦,那我在试试吧,谢谢啊,
以后我会记得多加点分的,呵呵
以后我会记得多加点分的,呵呵
#22
无所谓。并不是希罕你那点分。
#1
强制类型转换:Integer(DoubleValue);
不过似乎无实际意义。
可以用函数去尾或四舍五入
不过似乎无实际意义。
可以用函数去尾或四舍五入
#2
抱歉: 强制类型转换:Integer(DoubleValue); 不能用。说一下你想得到什么效果。或者你直接用函数,去尾或四舍五入。
#3
比如i是各int型的,temp1是个double型的数组,现在我要把temp1中的数据赋值给i,我要怎么写?
用函数去尾也可以啊,不过有没有直接的函数可以去尾啊?
用函数去尾也可以啊,不过有没有直接的函数可以去尾啊?
#4
I := Trunc(Temp1[下标]);//去尾
I := Round(Temp1[下标]);//四舍五入
I := Round(Temp1[下标]);//四舍五入
#5
发现执行程序时有错误,我原程序中其实是在一个SQL语言中用到
SQL是这样的,
SQL.ADD('update FXSJ set RXSP=1 where ZYID=Trunc(fx[i,0])');
ZYID是个int型的,fx[i,0]是个double型的数据,但是系统报错是“i,0附近有语法错误”,请达人帮我看看错在哪里啊?谢谢!
SQL是这样的,
SQL.ADD('update FXSJ set RXSP=1 where ZYID=Trunc(fx[i,0])');
ZYID是个int型的,fx[i,0]是个double型的数据,但是系统报错是“i,0附近有语法错误”,请达人帮我看看错在哪里啊?谢谢!
#6
呵.....你不能把Trunc(fx[i,0])放在SQL语句外面啊?
SQL.ADD(Format('update FXSJ set RXSP=1 where ZYID=%d',[Trunc(fx[i,0])]));
SQL.ADD(Format('update FXSJ set RXSP=1 where ZYID=%d',[Trunc(fx[i,0])]));
#7
还是不行啊,编译通不过,报错了
[Error] Unit1.pas(250): Too many actual parameters
[Error] Unit1.pas(250): Too many actual parameters
#8
你确定fx是一个二维数组吗?
#9
是啊,我定义的是fx:array of array of double;
#10
把代码整个地全部地贴出来。
#11
for i:=0 to m-1 do
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('#.###',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('#.###',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('#.###',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('#.###',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('#.###',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('#.###',fx[i,6]));
SQL.Add(' where ZYID=fx[i,0]');
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select NJ, XY, ZY,');
SQL.Add('RXSP, ZXCJ, BYSP,');
SQL.Add('ZGPJ, YHPJ, ZLPJ from FXSJ');
Open;
end;
全部的代码很长,以上是这一部分的,怀疑就是where ZYID=fx[i,0]出现错误了,如果把这一句换成where ZYID=1 就可以的。
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('#.###',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('#.###',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('#.###',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('#.###',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('#.###',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('#.###',fx[i,6]));
SQL.Add(' where ZYID=fx[i,0]');
ExecSQL;
Close;
SQL.Clear;
SQL.Add('select NJ, XY, ZY,');
SQL.Add('RXSP, ZXCJ, BYSP,');
SQL.Add('ZGPJ, YHPJ, ZLPJ from FXSJ');
Open;
end;
全部的代码很长,以上是这一部分的,怀疑就是where ZYID=fx[i,0]出现错误了,如果把这一句换成where ZYID=1 就可以的。
#12
你不是说RXSP是整型的字段吗?干嘛又用FormatFloat?FormatFloat返回带小数点的。
#13
并且,你把fx直接放到SQL语句中,你希望SQLServer知道你的fx是什么东东?
#14
之前的RXSP是个int型的,我只是打了个比方。
上面的一带代码中除了ZYID是个int型的,其他几个都是float型的。
我就是怀疑where这句错误了,可是我不知道怎么写闹。
比如fx[i,0]的值为1,我希望SQLServer查询到ZYID值为1的那一组记录
上面的一带代码中除了ZYID是个int型的,其他几个都是float型的。
我就是怀疑where这句错误了,可是我不知道怎么写闹。
比如fx[i,0]的值为1,我希望SQLServer查询到ZYID值为1的那一组记录
#15
试一下:
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('0',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('0',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('0',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('0',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('0',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('0',fx[i,6]));
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
ExecSQL;
用Format也可以,用FormatFloat也可以,还有其它函数可以用。不过要用得正确。
上面是假设你的上述字段都是整型
begin
Close;
SQL.Clear;
SQL.Add('update FXSJ set RXSP='+FormatFloat('0',fx[i,1]));
SQL.Add(', ZXCJ='+FormatFloat('0',fx[i,2]));
SQL.Add(', BYSP='+FormatFloat('0',fx[i,3]));
SQL.Add(', ZGPJ='+FormatFloat('0',fx[i,4]));
SQL.Add(', YHPJ='+FormatFloat('0',fx[i,5]));
SQL.Add(', ZLPJ='+FormatFloat('0',fx[i,6]));
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
ExecSQL;
用Format也可以,用FormatFloat也可以,还有其它函数可以用。不过要用得正确。
上面是假设你的上述字段都是整型
#16
哦,那你就只把
SQL.Add(' where ZYID=fx[i,0]');
这句,改为:
SQL.Add(' where ZYID='+ FormatFloat('0',fx[i,0]));//进位
或者:
SQL.ADD(Format(' where ZYID=%d',[Trunc(fx[i,0])]));//去尾。这个写法前面早已说过了
SQL.Add(' where ZYID=fx[i,0]');
这句,改为:
SQL.Add(' where ZYID='+ FormatFloat('0',fx[i,0]));//进位
或者:
SQL.ADD(Format(' where ZYID=%d',[Trunc(fx[i,0])]));//去尾。这个写法前面早已说过了
#17
SQL.Add(' where ZYID='+FormatFloat('0',fx[i,0]));
这样写是对的,可以实现了,呵呵,谢谢啊!
不过还有一个问题,就是我要把RXSP返回带3个小数点的值要怎么样实现啊,我原来的语句‘set RXSP='+FormatFloat('#.###',fx[i,1]));好像还是返回一个不带小数点的,奇怪!
这样写是对的,可以实现了,呵呵,谢谢啊!
不过还有一个问题,就是我要把RXSP返回带3个小数点的值要怎么样实现啊,我原来的语句‘set RXSP='+FormatFloat('#.###',fx[i,1]));好像还是返回一个不带小数点的,奇怪!
#18
formatfloat('0.000',fx[i,1])
加分,结贴!(十分太少了!差点让你晕死呢)
加分,结贴!(十分太少了!差点让你晕死呢)
#19
formatfloat('0.000',fx[i,1])也不行啊,而且这个和我用#不是一样的吗?
#20
一样。
你试一下,是不是你要的效果
procedure TForm1.Button1Click(Sender: TObject);
var
x: double;
begin
x := 98.12345678;
showmessage(formatfloat('0.000',x));//98.123
end;
你试一下,是不是你要的效果
procedure TForm1.Button1Click(Sender: TObject);
var
x: double;
begin
x := 98.12345678;
showmessage(formatfloat('0.000',x));//98.123
end;
#21
哦,那我在试试吧,谢谢啊,
以后我会记得多加点分的,呵呵
以后我会记得多加点分的,呵呵
#22
无所谓。并不是希罕你那点分。