字符串位数不足时如何用0补齐
比如一个实数10.13,将其转为字符串010.130的形式,如何实现,先谢谢了。(setq real (getreal "\n输入数字:"))
(setq dimzin (getvar 'dimzin))
(setvar 'dimzin 0)
(setq str (rtos real 2 3))
(if (< (setq n (strlen str)) 7)
(repeat (- 7 n)
(setq str (strcat "0" str))
)
)
(setvar 'dimzin dimzin)
(print str) 谢谢版主,用你的方法解决了。 本帖最后由 ll_j 于 2013-2-2 21:21 编辑
来个更通用的:
(defun dig (num nn dn / n0 oldd ns); num数值,nn整数位数,dn小数位数
(setq oldd (getvar "dimzin"))
(setvar "dimzin" 0)
(setq ns (rtos num 2 dn))
(if (< num (expt 10 nn))
(progn
(setq n0 (if (/= 1000 num)
(fix (/ (log num) (log 10.0)))
3
)
n0 (- nn n0 1)
)
(if (> n0 0)
(repeat n0 (setq ns (strcat "0" ns)))
ns
)
)
ns
)
(setvar "dimzin" oldd)
ns
)
(dig 15.2 3 3)
; 错误: no function definition: NM ynhh 发表于 2013-2-1 14:34 static/image/common/back.gif
(dig 15.2 3 3)
; 错误: no function definition: NM
不好意思,程序先使用了子函数,临发的时候调整了一下,没有改彻底,上面的代码重新改过了。
一般前面需要一定数位的在测量桩号中会使用,但也就是3位,就像G版的那样就可以了,我这个是“钻牛角尖”的玩意,并没有什么实际用途,练练手而已。 ll_j 发表于 2013-2-2 21:27 static/image/common/back.gif
不好意思,程序先使用了子函数,临发的时候调整了一下,没有改彻底,上面的代码重新改过了。
一般前面 ...
你这个程序也很好,感觉上比G版的通用
感谢你的高超技术和热心精神
祝你春节愉快 好东本,,,已经试用了,,,爽 ,,, 谢谢楼主!又学一招。
页:
[1]