请教关于计算的问题?(100分)

  • 主题发起人 主题发起人 ynjt
  • 开始时间 开始时间
Y

ynjt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个表(table1)中有四个字段dl1,dl2,dl3,dl4(均为数值型,没有小数)
它们的关系是dl1*dl2/dl3=dl4现在dl1,dl2,dl3的值已有,求dl4的值
我写的编码是:table1.fieldbyname('dl4').asfloat:=int(round1(table1.fieldbyname('dl1').asfloat*table1.fieldbyname('dl2').asfloat/table1.fieldbyname('dl3').asfloat)+0.5)
round1是一自定义四舍五入函数。
现在的问题是:执行时一直提示无效的浮点格式。
请教各位如何解决?
 
请大家帮忙!急!!!
 
全用VARIANT类型;需要显示或出报表时再对VARIANT进行转换;
table1.fieldbyname('dl4').value:=int(round1(table1.fieldbyname('dl1').value*table1.fieldbyname('dl2').value/table1.fieldbyname('dl3').value)+0.5)
 
修改表结构把dl4字段的类型该为浮点数
 
改用编码:table1.fieldbyname('dl4').asinteger:=int(round1(table1.fieldbyname('dl1').asinteger*table1.fieldbyname('dl2').asinteger/table1.fieldbyname('dl3').asinteger)+0.5)
 
to Devinfo用integer类型不能编译。
 
to 迷糊改为浮点格式仍提示。
 
用integer 后,编译是有什么提示?
 
to ynjt,
试试下面的:
with Table1do
FieldByName('dl4').AsInteger:= Ceil(FieldByName('dl1').AsInteger*FieldByName('dl2').AsInteger/FieldByName('dl3').AsInteger)
Ceil function
Rounds variables up toward positive infinity.
Call Ceil to obtain the lowest integer greater than or equal to X. The absolute value of X must be less than MaxInt. For example:
Ceil(-2.8) = -2
Ceil(2.8) = 3
Ceil(-1.0) = -1
 
你写在哪个事件里的
 
谢谢大家回复!原因我已找到:D3没有设条件(不能为0),如果为0则出现无效浮点格式。
人人有分。谢谢!!!
 
晕死,简单的地方往往容易被忽略。
 
后退
顶部