coolpoom 发表于 2009-2-8 22:18:00

如何求出十位以上的数?

如何求出十位以上的数?比如9.32 = 0;17.2 = 10;21.3 = 20;115 = 110 ...等等

Andyhon 发表于 2009-2-8 23:04:00

<p>Command: (* (fix (/ 115 10)) 10)<br/>110</p><p>Command: (* (fix (/ 21.3 10)) 10)<br/>20</p><p>Command: (* (fix (/ 17.2 10)) 10)<br/>10</p><p>Command: (* (fix (/ 9.32 10)) 10)<br/>0</p>

coolpoom 发表于 2009-2-9 09:14:00

学习了~

zhelindaxues 发表于 2009-2-10 13:25:00

<p>二楼的解释思路。先进行除10处理 然后再取整 乘10处理。同样也可以进行取5处理大于3取5 小于3取0</p><p>(defun c:qu5(x)</p><p>(setq y(/ x 5)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x(rem x 5)</p><p>)</p><p>(if (&gt; 3 x)(setq y (+ 1 y)))</p><p>(setq y (fix y))</p><p>(setq x (* 5 y))</p><p>)</p><p>以后要求对某数x进行处理时只要(qu5 x)就行了。</p><p></p>

linheyuanpcb 发表于 2012-4-16 16:02:32

问题是:如果本身已经是整的可以不加?如 150 已经整数了但他还+5

cabinsummer 发表于 2012-4-17 03:12:23

4楼误导人,曲解2楼意思。
先用对数函数log和取整函数fix求出要处理的数有多少位,再根据2楼的方法用十的几次幂处理。类似原理请参考我的LISP大挑战第一季
页: [1]
查看完整版本: 如何求出十位以上的数?