舍入为偶数
在lisp中有没有办法将其四舍五入到最近的偶数?例如,如果我把一个距离除以某个数字,然后它除以5,我怎么能把它变成6呢。当然,如果它被分成4,我不想对这个数字做任何事情。
谢谢
(defun even ( n )
(setq n (fix n))
(if (not (eq (rem n 2) 0))
(setq n (1+ n))
)
n
)
(even 2.1 => 2)
(even 5.3 => 6)
谢谢,效果很好。 另一个:
(defun even ( x ) (* 2 (fix (/ (1+ x) 2))))并考虑负值:
(defun even ( x ) (* 2 (fix (/ ((if (< x 0) 1- 1+) x) 2))))和另一种方法:
(defun even ( x ) (* 2 (atoi (rtos (/ x 2.0) 2 0)))) 马尔科,
OP希望向上取整到下一个偶数,您的代码将2.1取整到2,应该是4。
据我所知,OP想要的是最近的偶数,而不是下一个:
没问题。。。。 谢谢所有的回复,我现在已经开始工作了。这些论坛上有一些非常聪明的人。
页:
[1]