Es kann Implementierungen geben, bei denen (format nil "~,100F" x)
das tut, was Sie wollen. Aber in den meisten Fällen wird dies zuerst in einen Gleitkommawert umgewandelt, dann werden Ziffern berechnet, wodurch die Genauigkeit verloren geht.
Es ist nicht zu schwer, eigene Programme zu programmieren. Die Idee besteht darin, die Teile vor und nach dem Dezimalpunkt als Ganzzahlen getrennt zu berechnen. Hier ist mein Vorschlag:
(defun number->string-with-fixed-decimal-places (x width &optional stream)
"Print an approximation of <x> with <width> digits after the decimal point."
(multiple-value-bind (int dec) (truncate x)
(let ((dec-shifted (truncate (* (abs dec) (expt 10 width)))))
(format stream "~d.~v,vd" int width #\0 dec-shifted))))
Eine weitere beliebte Implementierung: Dave Gillespie Calc implementiert Gleitkomma-Gleitkomma in Elisp (die selbst nicht Bigints hat!). – Ken