明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1685|回复: 5

比较两个表的疑惑?

[复制链接]
发表于 2004-6-20 14:04:00 | 显示全部楼层 |阅读模式
我在进行两点坐标的比较时(其实是两个表的比较),使用了下列语句:


(while (= (equal Pt1 Pt2) nil)


                         (program......)


)


当两点坐标相等时,有时候跳出循环,可有时后却进入死循环。后来我修改了一下:


(equal Pt1 Pt2 0.0001)


结果再也不进入死循环了,我不明白的是0.0001是怎么控制点(表)的精度的?
发表于 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来循环的
发表于 2004-6-20 15:12:00 | 显示全部楼层
浮点数运算的精度问题,判断两个浮点数是否相等必须设置一个精度范围
 楼主| 发表于 2004-6-20 22:32:00 | 显示全部楼层
对于两个数的精度比较容易理解,可对于表的精度为什么用0.0001也有效呢?
发表于 2004-6-20 22:38:00 | 显示全部楼层
equal 对表也有效啊!本来就是这样。看看帮助。
发表于 2004-6-21 08:04:00 | 显示全部楼层
(while (not (equal Pt1 Pt2 0.00001))


                         (program......)


)


可能你的program无法计算到pt1等于pt2(精度范围内),你跟踪一下program,看看pt1和pt2是否会相等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 04:19 , Processed in 0.160663 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表