dhwl2009 发表于 2008-11-11 19:47:00

[求助]数字四舍五入?

<p>cad中如何选定某些数字,对其的小数位数进行特殊制定控制?四舍五入?</p><p>比如3.14159</p><p>如果我需要2位小数,可以把数字变成3.14,</p><p>如果要3位,就继续变成3.142</p><p>如我再选择这个"3.142",希望变成5位,就又能把这个数字变回3.14159</p><p>也就是希望能对这个数字的真实数值,有一个记忆功能</p>

ZZXXQQ 发表于 2008-11-15 12:54:00

如果仅仅是四舍五入,7楼可行。<br/>如果要浮点数相等判断,应使用equal函数。

飞诗(fsxm) 发表于 2008-11-12 21:56:00

本帖最后由 作者 于 2008-11-12 21:58:14 编辑

(read (rtos 数 2 精度))

来也 发表于 2008-11-11 21:37:00

<p>楼主的需求正好是我的需要。</p><p>只是我的需要更简单点,只需对一些数字进入四舍五入!</p><p>哪位大侠能做做贡献啊?!</p>

xshrimp 发表于 2008-11-11 22:00:00

;;;四舍五入---------------------------------------------------
;;;(gps->round 3.5   0)--->4
;;;(gps->round 3.4   0)--->3
;;;(gps->round 10.25 1) --->10.3
(defun gps->round (num n)
(cond
   ((= n 0) (fix (+ num 0.5)))
   (t (/ (fix (+ (* (expt 10 n) num) 0.5)) (float (expt 10 n))))
)
)

zml84 发表于 2008-11-11 22:12:00

<img src="http://1822.img.pp.sohu.com.cn/images/blog/2008/10/21/10/3/11dc4c3eac5g215.jpg" border="0" alt=""/>

muwind 发表于 2008-11-11 23:39:00

<p>命令: (GPS-&gt;ROUND&nbsp; 1.255 2)<br/>1.25</p><p>但是 </p><p>命令: (GPS-&gt;ROUND&nbsp; 1.355 2)<br/>1.36</p><p>为什么呢</p>

来也 发表于 2008-11-12 19:08:00

<p><font color="#800080">;;;四舍五入---------------------------------------------------<br/></font><font color="#800080">;;;<font color="#ff0000">(</font>gps-&gt;round <font color="#008000">3.5</font>&nbsp;&nbsp; <font color="#008000">0</font><font color="#ff0000">)</font>---&gt;4</font><br/><font color="#800080">;;;<font color="#ff0000">(</font>gps-&gt;round <font color="#008000">3.4</font>&nbsp;&nbsp; <font color="#008000">0</font><font color="#ff0000">)</font>---&gt;3</font><br/><font color="#800080">;;;<font color="#ff0000">(</font>gps-&gt;round <font color="#008000">10.25</font> 1<font color="#ff0000">)</font> ---&gt;10.3</font><br/><font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/defun.htm" target="_black"><font color="#0000ff">defun</font></a>
                <font color="#0000ff"><b>gps-&gt;round</b></font>
                <font color="#ff0000">(</font>num n<font color="#ff0000">)</font><br/>&nbsp;&nbsp; <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/cond.htm" target="_black"><font color="#0000ff">cond</font></a><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">(</font><font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/61.htm" target="_black"><font color="#0000ff">=</font></a> n <font color="#008000">0</font><font color="#ff0000">)</font>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/fix.htm" target="_black"><font color="#0000ff">fix</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/+.htm" target="_black"><font color="#0000ff">+</font></a> num <font color="#008000">0.5</font><font color="#ff0000">)</font><font color="#ff0000">)</font><font color="#ff0000">)</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/t.htm" target="_black"><font color="#0000ff">t</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/47.htm" target="_black"><font color="#0000ff">/</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/fix.htm" target="_black"><font color="#0000ff">fix</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/+.htm" target="_black"><font color="#0000ff">+</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/42.htm" target="_black"><font color="#0000ff">*</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/expt.htm" target="_black"><font color="#0000ff">expt</font></a>
                <font color="#008000">10</font> n<font color="#ff0000">)</font> num<font color="#ff0000">)</font>
                <font color="#008000">0.5</font><font color="#ff0000">)</font><font color="#ff0000">)</font>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/float.htm" target="_black"><font color="#0000ff">float</font></a>
                <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/expt.htm" target="_black"><font color="#0000ff">expt</font></a>
                <font color="#008000">10</font> n<font color="#ff0000">)</font><font color="#ff0000">)</font><font color="#ff0000">)</font><font color="#ff0000">)</font><br/>&nbsp;&nbsp; <font color="#ff0000">)</font><br/><font color="#ff0000">)</font></p><p><font color="#ff0000">是LSP程序吗,不会用!</font></p><p><font color="#ff0000">我的问题是其实对数字四舍五入,但保留原有位数。比如3.5四舍五入后变成4.0,3.4四舍五入后变成3.0</font></p>

xshrimp 发表于 2008-11-14 23:40:00

<p>(= 126&nbsp;&nbsp; (+ (* 100 1.255 ) 0.50) ) -&gt;nil<br/>(= 136&nbsp;&nbsp; (+ (* 100 1.355 ) 0.50) ) -&gt;T</p><p>(+ (* 100 1.255 ) 0.50)-&gt;126.0</p><p>(+ (* 100 1.355 ) 0.50)-&gt;136.0</p><p>(fix (+ (* 100 1.255 ) 0.50))-&gt;125</p><p>(fix (+ (* 100 1.355 ) 0.50))-&gt;136</p><p>搞不明白为什么!!</p>

xshrimp 发表于 2008-11-14 23:55:00

本帖最后由 作者 于 2008-11-14 23:58:29 编辑

fsxm的简洁..不知道我的为什么
(< (* 100 1.255 ) 125.5)->T????
(= (* 100 1.355 ) 135.5)->T????
;;;四舍五入---------------------------------------------------
;;;(GPS->ROUND1.355 2)--->1.36
;;;(GPS->ROUND1.255 2)--->1.26
(defun gps->round (num n)
   (cond
    ((= n 0) (fix (+ num 0.5)))
    (t (/ (fix (read (vl-prin1-to-string (+ (* (expt 10 n) num 1.00) 0.5)))) (float (expt 10 n))))
   )
)
页: [1] 2
查看完整版本: [求助]数字四舍五入?