baizhan 发表于 2009-2-13 14:58:00

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

<p>(defun c:tt ()<br/>&nbsp; (setq p0 (getpoint "输入基点:"))<br/>&nbsp; (setq p1 (polar p0 0 100))<br/>&nbsp; (setq p2 (polar p1 pi 100))<br/>);end defun</p><p>返回值<br/>(0.0 0.0 0.0) <br/>(100.0 0.0 0.0) <br/>(0.0 1.22465e-014 0.0)</p><p>为什么第三个返回值是这样的,最起码也不会有字母(1.22465e-014)啊。<br/>郁闷啊。</p>

jaminth 发表于 2009-2-13 16:41:00

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

caoyin 发表于 2009-2-13 17:37:00

科学计数法

carrot1983 发表于 2009-2-13 18:01:00

<p>这个发现有点意思。。。</p><p>2楼和3楼的都误会楼主的意思了。。。</p><p>(0.0 0.0 0.0) <br/>(100.0 0.0 0.0) <br/>(0.0 1.22465e-014 0.0)</p><p></p><p>照道理,第三个返回值应该是(0.0 0.0 0.0) 才对。。。</p><p>可是却返回了(0.0 1.22465e-014 0.0)</p><p>这个就是CAD的BUG了</p><p></p>

carrot1983 发表于 2009-2-13 18:10:00

<p>原因应该是出在polar函数的定义。。。</p><p>试着写一个polar函数。。。应该是精度问题</p><p>就明白为什么了。。。</p><p></p>

wwwbxd 发表于 2009-2-13 18:16:00

好像时常量PI精度的问题

baizhan 发表于 2009-2-13 18:58:00

<p>&nbsp;&nbsp;&nbsp; 看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。</p><p>&nbsp;&nbsp;&nbsp; 上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结果也是错误的,查了好久才查出来,最后改成,(setq xx(* 数值 0.5))就行了,道理都是一样的,结果却不一样。</p>

carrot1983 发表于 2009-2-13 23:02:00

baizhan发表于2009-2-13 18:58:00static/image/common/back.gif&nbsp;&nbsp;&nbsp; 看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。&nbsp;&nbsp;&nbsp; 上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结

<p>这个是这样子的没错。。。</p><p>当然你可以2改成2.0或者用(float 2)</p><p></p>
页: [1]
查看完整版本: 看似很简单的问题,有谁知道问题?