数值圆整
本帖最后由 自贡黄明儒 于 2022-9-20 08:03 编辑今天帮人写了一程序,要求: 个位数字小于2时,舍去;3~7时变为5;大于7时,进位
这种进位方式误差不超过3mm,采用四舍五入误差会更大一些
与vbs上很多进位方式也是不同的。
实际工作中,个位数5或者0,也便于下料看尺寸
这个适合练手。。。
;;(_MyNumRound 32.5)==>30
;;(_MyNumRound 37.5)==>35
;;(_MyNumRound 38.5)==>40
**** Hidden Message ***** liuhe 发表于 2022-9-20 10:04
大佬,你帮别人写插件 收费么?不方便说也没关系。只是最近没啥动力玩下去了,工作需求基本满足了
我半小时写个程序收别人5块钱别人都觉得不划算 本帖最后由 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)
本帖最后由 xtjd 于 2022-9-20 14:23 编辑
;黄总代码改用wcmatch法
(defun t1(num / a)
(setq a(itoa(fix num)))
(+(*(atoi(substr a 1(1-(strlen a))))10)
(cond
((wcmatch a "*") 0)
((wcmatch a "*") 5)
(t 10)
)
)
)
黄老大早就发布实用函数啦 黄老大早就发布实用函数啦 感谢黄大师分享程序! 感谢分享 感谢黄大师分享程序! 虽然用不上,还是要向大佬学习。 大佬,你帮别人写插件 收费么?不方便说也没关系。只是最近没啥动力玩下去了,工作需求基本满足了