看似很简单的问题,有谁知道问题?
<p>(defun c:tt ()<br/> (setq p0 (getpoint "输入基点:"))<br/> (setq p1 (polar p0 0 100))<br/> (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> <p>楼主的数学也不怎么样吧....有字母e并不影响程序的运行啊!</p> 科学计数法 <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> <p>原因应该是出在polar函数的定义。。。</p><p>试着写一个polar函数。。。应该是精度问题</p><p>就明白为什么了。。。</p><p></p> 好像时常量PI精度的问题 <p> 看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。</p><p> 上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结果也是错误的,查了好久才查出来,最后改成,(setq xx(* 数值 0.5))就行了,道理都是一样的,结果却不一样。</p> baizhan发表于2009-2-13 18:58:00static/image/common/back.gif 看着不舒服,好端端的怎么有个这样的东西。不知道各位有没有遇到过,有什么解决的方法没有。 上次遇到个更奇怪的,(setq xx(/ 数值 2)),计算出来的结<p>这个是这样子的没错。。。</p><p>当然你可以2改成2.0或者用(float 2)</p><p></p>
页:
[1]