零填充小数的格式字符串,前面有符号吗?

时间:2016-02-14 12:16:47

标签: formatting common-lisp

是否有一个格式字符串,用于填充小数,前面带有符号?

(format nil ? 5) => "+0005"
(format nil ? -5) => "-0005"

我找到的最接近的是

(format nil "~4,'0@d" 5) => "00+5"
(format nil "~4,'0@d" -5) => "00-5"

1 个答案:

答案 0 :(得分:6)

这是自定义打印机功能的草稿:

(defun signed-padding (stream data colonp atsignp &optional (padding 0))
  (declare (ignore colonp atsignp))
  (format stream "~:[+~;-~]~v,'0d" (minusp data) padding (abs data)))

......还有一个例子:

(values
 (format nil "~v/signed-padding/" 20 330)
 (format nil "~5/signed-padding/" -4))

"+00000000000000000330"
"-00004"

您可以添加更多支票和选项。