关于一个小数的处理(50分)

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
ACCESS数据库,设计时字段为数字,双精度,小数两位。在程序中基本上所有的该类字段我都用FORMAT(‘%.2f',..........)处理好了小数,但在下面代码中无法处理好小数位数问题
ADOQuery6.Close;
ADOQuery6.SQL.Clear;
ADOQuery6.SQL.Add('update tb_yp,tb_temp set');
[red] ADOQuery6.SQL.Add(' tb_yp.库存数量=tb_yp.库存数量-tb_temp.数量 ');[/red] ADOQuery6.SQL.Add(' where tb_yp.id=tb_temp.id');
ADOQuery6.ExecSQL;
ADOTable2.First;
红色部份在相减时将产生问题,取例如下
库存数量26.01=26.01-26 那么结果就等于0.00999999999999,如果减的是25以下的数字,那么又不会产生这情况,会正常的保留两位。
 
帮顶!

╭=========================================╮

http://www.source520.com

站长开发推广同盟 站长朋友的终极驿站
同时拥有海量源码电子经典书籍下载

http://www.source520.com/search/search.asp

"编程.站长"论坛搜索引擎-----为中国站长注入动力!
╰=========================================╯
 
用一下roundto,小数位数你根据现有的最大位数就可以了,这是浮点操作的问题,你在DFW上查询一下,应该有很多解决办法,而不仅仅这个
 
放在sql里面解决也可以round(tb_yp.库存数量,2)就是保留两位小数了
 
在你执行完查询
ADOQuery6.Close;
ADOQuery6.SQL.Clear;
ADOQuery6.SQL.Add('update tb_yp,tb_temp set');
[red] ADOQuery6.SQL.Add(' tb_yp.库存数量=tb_yp.库存数量-tb_temp.数量 ');[/red] ADOQuery6.SQL.Add(' where tb_yp.id=tb_temp.id');
ADOQuery6.ExecSQL;
//!!!!!!!!!!!!!!后加上这样一句就可以。
(ADOQuery6.fieldbyname(ADOQuery6.fields[0].DisplayName)as TNumericField).displayformat:='0.00';
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
927
SUNSTONE的Delphi笔记
S
S
回复
0
查看
758
SUNSTONE的Delphi笔记
S
后退
顶部