如何控制Common Lisp格式的小数点?

azz*_*msa 2 common-lisp

如何将值传递给控制小数点数打印的函数.

我可以做$或者f,例如

(format t "~,3f" 3.141592)
(format t "~2$" 3.141592)
Run Code Online (Sandbox Code Playgroud)

但是如何做这样的事情

(defun control-format (x)
  (format nil "~,xf" 3.141592))
Run Code Online (Sandbox Code Playgroud)

所以我们可以传递任何数字作为参数control-format来控制我们想要的十进制数.

谢谢.

jla*_*ahd 7

使用v而不是文字数字:

* (dotimes (i 8)
    (format t "~,vf~%" i pi))
3.
3.1
3.14
3.142
3.1416
3.14159
3.141593
3.1415927
NIL
*
Run Code Online (Sandbox Code Playgroud)