明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1367|回复: 7

看似很简单的问题,有谁知道问题?

[复制链接]
发表于 2009-2-13 14:58:00 | 显示全部楼层 |阅读模式

(defun c:tt ()
  (setq p0 (getpoint "输入基点:"))
  (setq p1 (polar p0 0 100))
  (setq p2 (polar p1 pi 100))
);end defun

返回值
(0.0 0.0 0.0)
(100.0 0.0 0.0)
(0.0 1.22465e-014 0.0)

为什么第三个返回值是这样的,最起码也不会有字母(1.22465e-014)啊。
郁闷啊。

发表于 2009-2-13 16:41:00 | 显示全部楼层

楼主的数学也不怎么样吧....有字母e并不影响程序的运行啊!

发表于 2009-2-13 17:37:00 | 显示全部楼层
科学计数法
发表于 2009-2-13 18:01:00 | 显示全部楼层

这个发现有点意思。。。

2楼和3楼的都误会楼主的意思了。。。

(0.0 0.0 0.0)
(100.0 0.0 0.0)
(0.0 1.22465e-014 0.0)

照道理,第三个返回值应该是(0.0 0.0 0.0) 才对。。。

可是却返回了(0.0 1.22465e-014 0.0)

这个就是CAD的BUG了

发表于 2009-2-13 18:10:00 | 显示全部楼层

原因应该是出在polar函数的定义。。。

试着写一个polar函数。。。应该是精度问题

就明白为什么了。。。

发表于 2009-2-13 18:16:00 | 显示全部楼层
好像时常量PI精度的问题
 楼主| 发表于 2009-2-13 18:58:00 | 显示全部楼层

    看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。

    上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结果也是错误的,查了好久才查出来,最后改成,(setq xx(* 数值 0.5))就行了,道理都是一样的,结果却不一样。

发表于 2009-2-13 23:02:00 | 显示全部楼层
baizhan发表于2009-2-13 18:58:00    看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。    上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结

这个是这样子的没错。。。

当然你可以2改成2.0或者用(float 2)

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

本版积分规则

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

GMT+8, 2025-7-29 16:45 , Processed in 0.187089 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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