乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 91|回复: 5

比较两个表的疑惑?

[复制链接]
wzh

32

主题

104

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
232
发表于 2004-6-20 14:04:00 | 显示全部楼层 |阅读模式
我在进行两点坐标的比较时(其实是两个表的比较),使用了下列语句:
(while (= (equal Pt1 Pt2) nil)
                         (program......)
)
当两点坐标相等时,有时候跳出循环,可有时后却进入死循环。后来我修改了一下:
(equal Pt1 Pt2 0.0001)
结果再也不进入死循环了,我不明白的是0.0001是怎么控制点(表)的精度的?
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2004-6-20 14:50:00 | 显示全部楼层
嗯. Pt1 等 Pt2        就循还结速的. 可能进入死循环的原因是在你的(program......)里再算出的pt1                 pt2 以到了尽头所以得出都是nil 所以不能结束while循坏. 建设你算出循环次数用repeat 来处理. 或都你喜欢用while的话就要细心看好while里面给一个结束的机会. 如
(setq i 0)
(while (and (= (equal Pt1 Pt2) nil) (< i 10))
         (progn ....
                         (setq i (1+ i))))
这样说明如循环超过10次就是属於死循还了,我是这样防止进入死循环的. 但我觉的也蛮麻烦的. 所以在一般的情况我是用repeat来循环的
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-6-20 15:12:00 | 显示全部楼层
浮点数运算的精度问题,判断两个浮点数是否相等必须设置一个精度范围
回复

使用道具 举报

wzh

32

主题

104

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
232
发表于 2004-6-20 22:32:00 | 显示全部楼层
对于两个数的精度比较容易理解,可对于表的精度为什么用0.0001也有效呢?
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-6-20 22:38:00 | 显示全部楼层
equal 对表也有效啊!本来就是这样。看看帮助。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-6-21 08:04:00 | 显示全部楼层
(while (not (equal Pt1 Pt2 0.00001))
                         (program......)
)
可能你的program无法计算到pt1等于pt2(精度范围内),你跟踪一下program,看看pt1和pt2是否会相等
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-18 14:23 , Processed in 2.730648 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表