本帖最后由 llsheng_73 于 2022-9-26 00:36 编辑
凑个热闹
- (defun fixn(a n / b)(if(zerop(setq b(rem a n)))a(*(+(/(- a b 0.)n)(if(<(+ b b)n)0 1))n)))
(fixn 10.7 0.5)
10.5
_$ (fixn 10.3 0.5)
10.5
_$ (fixn 10.2 0.5)
10.0
_$ (fixn 9.8 0.5)
10.0
_$ (fixn 1053.5 5)
1055.0
_$ (fixn 1052 5)
1050.0
其实这个的真正用法是应该是下边这样
(mapcar'(lambda(x)(fixn x 32))'(15 33 79 124 148))
(0.0 32.0 64.0 128.0 160.0)
_$ (mapcar'(lambda(x)(fixn x 7))'(15 33 79 124 148))
(14.0 35.0 77.0 126.0 147.0)
_$ (mapcar'(lambda(x)(fixn x 13))'(15 33 79 124 148))
(13.0 39.0 78.0 130.0 143.0)
_$ (mapcar'(lambda(x)(fixn x 27))'(15 33 79 124 148))
(27.0 27.0 81.0 135.0 135.0)
更多的时候会涉及小数
(mapcar'(lambda(x)(fixn x 0.3))'(1.5 3.3 7.9 12.4 14.8))
(1.5 3.3 7.8 12.3 14.7)
(mapcar'(lambda(x)(fixn x 0.02))'(1.55 3.213 7.899 12.313 14.819))
(1.56 3.22 7.9 12.32 14.82)
|