两个单精度浮点型如何比较不了?(100分)

  • 主题发起人 主题发起人 gzccjz
  • 开始时间 开始时间
G

gzccjz

Unregistered / Unconfirmed
GUEST, unregistred user!
if ((query1.fieldbyname('mat_code').asstring<>edtmatcode.text) or (query1.fieldbyname('mat_qty').asfloat<>query1.fieldbyname('balance_qty').asfloat)) then
begin
application.MessageBox('该物料已存在,您可以修改其数量!','信息',64);
exit;
end

当or 的左边条件满足时却能正常执行.但or 的右边条件满足时却没有正常执行.请问何解?
 
浮点(实数)不能这样比较的, 应该使用 compareValue函数
 
浮点数不能那样比较,因为存在精度误差,基本上不可能完全相等,我的比较方法是:
if abs(query1.fieldbyname('mat_qty').asfloat - query1.fieldbyname('balance_qty').asfloat) <= 0.001 then 认为二者相等
 
我的是delphi5.里面不能用compareValue函数.没用types单元.只有math
 
就简单用 abs(float1-float2) < 0.000001 也可以
 
这种方法不错,收下
 
多人接受答案了。
 
后退
顶部