shiyan001 发表于 2013-2-1 11:25:45

字符串位数不足时如何用0补齐

比如一个实数10.13,将其转为字符串010.130的形式,如何实现,先谢谢了。

Gu_xl 发表于 2013-2-1 12:13:36

(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)

shiyan001 发表于 2013-2-1 12:56:39

谢谢版主,用你的方法解决了。

ll_j 发表于 2013-2-1 13:29:31

本帖最后由 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
)


ynhh 发表于 2013-2-1 14:34:49

(dig 15.2 3 3)
; 错误: no function definition: NM

ll_j 发表于 2013-2-2 21:27:33

ynhh 发表于 2013-2-1 14:34 static/image/common/back.gif
(dig 15.2 3 3)
; 错误: no function definition: NM

不好意思,程序先使用了子函数,临发的时候调整了一下,没有改彻底,上面的代码重新改过了。

一般前面需要一定数位的在测量桩号中会使用,但也就是3位,就像G版的那样就可以了,我这个是“钻牛角尖”的玩意,并没有什么实际用途,练练手而已。

ynhh 发表于 2013-2-4 08:58:05

ll_j 发表于 2013-2-2 21:27 static/image/common/back.gif
不好意思,程序先使用了子函数,临发的时候调整了一下,没有改彻底,上面的代码重新改过了。

一般前面 ...

你这个程序也很好,感觉上比G版的通用
感谢你的高超技术和热心精神
祝你春节愉快

xiabin68 发表于 2013-2-4 09:58:36

好东本,,,已经试用了,,,爽 ,,,

清风明月名字 发表于 2013-9-28 22:13:58

谢谢楼主!又学一招。
页: [1]
查看完整版本: 字符串位数不足时如何用0补齐