Eine beliebige Zahl kann mit einigen Dezimalzahlen in Float umgewandelt werden. Zum Beispiel ergibt (format nil "~,2f" 6)
"6.00"
. Aber gibt es eine Möglichkeit, eine beliebige Zahl mit einer analogen Float-Typ-Spezifikation direkt zu erzwingen; d.h. Ausgabe einer Nummer, nicht einer Zeichenkette? Alternativ habe ich versucht (read-from-string (format nil "~,2f" 6))
, aber dies behält nicht die Formatierung.Wie man Zahlen als Schwimmer mit einem bestimmten Format druckt?
Ich möchte einen verschachtelten Baum mit Zahlen (zusammen mit anderen Lisp-Objekten) als Float mit zwei Dezimalstellen drucken. Beispielsweise könnte ein Ausdruck wie X -> (A 3.00 (7.10 B) (C 8.12) 0.75)
aussehen, unabhängig von den in X dargestellten spezifischen Zahlentypen. Wird für diese Art der Ausgabe set-pprint-dispatch verwendet oder ist das Format ausreichend?
Ich glaube, du verwechselst eine Nummer mit der gedruckten Darstellung. – sds
Meinst du, dass Sie eine ganze Zahl in einen Float erzwingen wollen? Wie in '(float 6)' => '6.0'? Was meinst du mit "Formatierung beibehalten"? Zahlen im Speicher enthalten keine Formatierung. Sie können eine beliebige Zahl so formatieren, wie Sie möchten, wenn Sie sie drucken. – jkiiski
@sds Ja, jetzt sehe ich, dass Sie Recht haben. Was ich wirklich versuche, ist eine Nummer ohne die Anführungszeichen auszudrucken. Ich sollte nur verwenden (formatieren t "~, 2f" 6) statt (format nil "~, 2f" 6). Danke fürs klarstellen. – davypough