delphi中一个百思不得其解的问题

wangbin2 2000-08-04 07:20:00
系统: delphi 4
数据库 :paradox
分别有两个库(表),分别有个字段均为NUMBER型,(用delphi 中的DATABASE DESKTOP建立的),当我在程序中声明两个变量为DOUBLE时,明明两个库中的数据一模一样(用SQL EXPLOER查看)可是用TABLE/QUERY 访问后写入变量中时,比较两个变量大小时却不等。
我把两个变量相减的结果存入另一个DOUBLE型的变量时,该变量值为0,可是用它与0.00001比较时,结果却是该变量大于0.00001

恳请各位高手指点!在下不胜感激!!!
我的mail : wb557102@263.net
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgsun 2000-08-09
  • 打赏
  • 举报
回复
这是计算机中存取浮点数时都会出现的情况。解决办法是:
Var f1, f2 : Double;
X : Integer;
if abs(f1, fa) < Power(10, X) then
begin
end;
其中X可视需要精度而定。
alin 2000-08-09
  • 打赏
  • 举报
回复
if Format('%.4F',[Number_1]) <> Format('%.4F',[Number_2]) then
Begin
end;
//格式化后再作比较
pjy 2000-08-09
  • 打赏
  • 举报
回复
可以使用dec(double1,double2) < power(0.10000000,X)
X可设定为你的列类型的小数位+1。这样不会因为你的实际列的差异引起错误!
imhere_l 2000-08-09
  • 打赏
  • 举报
回复
可不可以用差值小于某个范围来控制?比如对于money类型的数据,就用(data1-data2)<0.01是认为data1=data2?
wsf 2000-08-08
  • 打赏
  • 举报
回复
wxy_2000说的对,所有计算机语言都有这样的问题,比较两个浮点数,一定要有范围限定
pjy 2000-08-08
  • 打赏
  • 举报
回复
我也有同样得问题!
wangbin2 2000-08-07
  • 打赏
  • 举报
回复
如果必须用两个浮点型变量进行比较大小呢?
比如两个金额的大小,是否一定要加上可允许的误差范围呢?
wxy_2000 2000-08-04
  • 打赏
  • 举报
回复
这是计算机中表示数据的误差所致,一般在表示浮点数时都出现这种情况,所以在程序中
一般不要以两个浮点型变量大小是否相等作为判断条件。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧