我如何将数字归集到整数
我需要在我的LISP例程中总是把一个数字四舍五入。fix命令似乎只是四舍五入。我需要所有带有任意小数点的数字总是向上取整到下一个偶数。例如:
4.1-四舍五入至5
5.8-四舍五入到6
3.00000000000001-四舍五入到4
2.00-保持不变;不归位。
我怎样才能轻松做到这一点?
提前感谢您的帮助。
如果需要,请提供更多信息:
我在做一个楼梯Lisp程序的动作,我把楼层高度除以7.3/4英寸的最大立管高度。然后这给了我一个立管的数量,需要四舍五入到下一个偶数。然后我取这个数字,除以楼层高度的差来创建我的立管。 对于正数,可能:
(if (/= (fix n) n)
(setq n (1+ (fix n))))
-大卫
非常感谢。然而,我最终使用了李·麦克的帖子中的代码。以下是我使用的:
;;; Q is my variable that I needed round up
(defun ROUND ( n m )
(cond
((equal 0.0 (rem n m) 1e- n)
((< n 0) (- n (rem n m)))
((+ n (- m (rem n m))))
)
)
(setq B (ROUND Q 1)) 仅针对变量,这里有另一个仅适用于正整数的变量:
(defun LM:int:roundup1 ( n ) (fix (+ n 1 -1e-))
_$ (LM:int:roundup1 2.1)
3
对于四舍五入到任意倍数:
(defun LM:int:roundup ( n m ) (* m (fix (+ (/ n (float m)) 1 -1e-)))
_$ (LM:int:roundup 4.3 2)
6 你真棒,好先生。 非常感谢。
页:
[1]