Ganzzahlige Teilung in Common Lisp?

7

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.

    
appusajeev 16.01.2010, 09:34
quelle

5 Antworten

16
%Vor%

Hinweis: Ссылка

    
kennytm 16.01.2010, 09:40
quelle
17

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.

    
Rainer Joswig 16.01.2010 11:54
quelle
3

Sie können die Funktion floor verwenden:

%Vor%

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:

%Vor%

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.

%Vor%

Ich lasse den Verweis auf multiple-value-bind in der Antwort, da es eine wichtige Funktion ist, mit der man sich auskennt.

    
Eli Bendersky 16.01.2010 09:40
quelle
1

Verwenden Sie die Funktion floor . In SBCL:

%Vor%

Zwei Werte werden zurückgegeben, der ganzzahlige Teil und der Nachkommaanteil.

    
Greg Hewgill 16.01.2010 09:39
quelle
0

Meine Lösung besteht darin, eine Div-Funktion zu definieren:

%Vor%     
Thorkil Kowalski Værge 17.03.2018 16:08
quelle

Tags und Links