Wenn ich (/ 7 2)
mache, was soll ich tun, um das Ergebnis 3
zu erhalten? Wenn ich (/ 7 2.0) mache, bekomme ich 3.5
, was wie erwartet ist.
Siehe FLOOR, CEILING und TRUNCATE in ANSI Common Lisp.
Beispiele (siehe die positiven und negativen Zahlen):
%Vor%Normalerweise wird für Division in Integer TRUNCATE verwendet.
Sie können die Funktion floor
verwenden:
Beachten Sie, dass es mehrere Werte zurückgibt und Sie nur die erste benötigen. Da floor
mehrere Werte zurückgibt, kann dies mit multiple-value-bind
wie folgt geschehen:
Bearbeiten: Wie Rainer in seinem Kommentar bemerkt, können Sie einfach das Ergebnis von floor
als Argument übergeben, wenn Sie nur den Quotienten benötigen.
Ich lasse den Verweis auf multiple-value-bind
in der Antwort, da es eine wichtige Funktion ist, mit der man sich auskennt.
Verwenden Sie die Funktion floor
. In SBCL:
Zwei Werte werden zurückgegeben, der ganzzahlige Teil und der Nachkommaanteil.
Meine Lösung besteht darin, eine Div-Funktion zu definieren:
%Vor%