Quand je fais (/ 7 2)
, que dois-je faire pour obtenir le résultat 3
? Si je fais (/ 7 2.0), je reçois 3.5
, ce qui est comme prévu.Division entière en Common Lisp?
Répondre
(floor 7 2)
Ref: http://rosettacode.org/wiki/Basic_integer_arithmetic#Common_Lisp
Utilisez la fonction floor
. En SBCL:
* (floor (/ 7 2))
3
1/2
Deux valeurs sont renvoyées, la partie entière et la partie fractionnaire.
Vous pouvez utiliser la fonction floor
:
(floor 7 2)
3
1
Notez qu'il renvoie plusieurs valeurs, et vous avez seulement besoin de la première. Depuis floor
renvoie des valeurs multiples, qui peut être fait avec multiple-value-bind
comme suit:
(multiple-value-bind (q r) (floor 7 2) q)
=> 3
Edit: Comme Rainer note dans son commentaire, il vous suffit de passer le résultat de floor
comme argument si vous avez besoin est le quotient.
[1]> (floor 7 2)
3 ;
1
[2]> (+ (floor 7 2) 5)
8
[3]>
Je quitte la référence à multiple-value-bind
dans la réponse, car il est une fonction importante à connaître.
comment puis-je obtenir la première valeur? retourne-t-il une liste ?? – appusajeev
@appusajeev: J'ai mis à jour la réponse –
qui n'est pas nécessaire. la première valeur est automatiquement transmise au code suivant. Vous avez besoin de MULTIPLE-VALUE-BIND si vous voulez toutes les valeurs ou certaines. (valeurs (étage 7 2)) renvoie juste le premier. –
Voir FLOOR, CEILING and TRUNCATE dans ANSI Common Lisp.
exemples (voir les nombres positifs et négatifs):
CL-USER 218 > (floor -5 2)
-3
1
CL-USER 219 > (ceiling -5 2)
-2
-1
CL-USER 220 > (truncate -5 2)
-2
-1
CL-USER 221 > (floor 5 2)
2
1
CL-USER 222 > (ceiling 5 2)
3
-1
CL-USER 223 > (truncate 5 2)
2
1
Habituellement, la division vers entier TRUNCATE est utilisé.
- 1. Streams en Common Lisp?
- 2. division entière en php
- 3. Common Lisp Exercices/problèmes
- 4. Arbres de dessin en Common Lisp
- 5. Comment append fonctionne en Common Lisp?
- 6. Implémentation de Mandelbrot Set en Common Lisp
- 7. Générer un quiz en Common Lisp?
- 8. Réinitialiser l'état dans Common Lisp
- 9. Exemples d'excellent code Common Lisp?
- 10. Problèmes avec ltk (common lisp)
- 11. Mot-clé programmatique Common Lisp
- 12. propriétés de division entière
- 13. division entière vs double division - question d'optimisation
- 14. Comment faire une division entière en Perl?
- 15. Permutation d'éléments dans une liste Common Lisp
- 16. Common Lisp: suppression du code inaccessible
- 17. compilation des applications avec Clozure Common Lisp
- 18. Grattage d'une table HTML dans Common Lisp?
- 19. Liaison de données XML pour Common Lisp
- 20. Recherche d'une implémentation Common Lisp commune
- 21. cross-package defgeneric/defmethod dans Common Lisp?
- 22. Problème de logiciel Allegro Common Lisp
- 23. Soit: la création d'une variable temporaire en Common Lisp
- 24. Quand le format imprime-t-il réellement en Common Lisp?
- 25. Comment tracer dans Common Lisp en utilisant gcl?
- 26. Comment faire une correspondance de modèle en Common Lisp
- 27. Signé 64 par 32 division entière
- 28. Correction d'une erreur GC dans Mac Common Lisp 5.0
- 29. Clojure: équivalent à la fonction Common Lisp READ?
- 30. Est-ce qu'une fonction Common Lisp renvoie 3 valeurs?
FLOOR fait la division par lui-même. – Svante
True, mais cela fonctionne également avec un seul argument. –