Cuando hago (/ 7 2)
, ¿qué debo hacer para obtener el resultado 3
? Si lo hago (/ 7 2.0), obtengo 3.5
, que es el esperado.División entera en Common Lisp?
Respuesta
(floor 7 2)
Ref: http://rosettacode.org/wiki/Basic_integer_arithmetic#Common_Lisp
Utilice la función floor
. En SBCL:
* (floor (/ 7 2))
3
1/2
Se devuelven dos valores, la parte entera y la parte fraccionaria.
Usted puede utilizar la función floor
:
(floor 7 2)
3
1
Observe que devuelve varios valores, y sólo necesita la primera. Desde floor
devuelve varios valores, que se puede hacer con multiple-value-bind
de la siguiente manera:
(multiple-value-bind (q r) (floor 7 2) q)
=> 3
Editar: Como Rainer señala en su comentario, sólo puede pasar el resultado de floor
como argumento si todo lo que necesita es el cociente.
[1]> (floor 7 2)
3 ;
1
[2]> (+ (floor 7 2) 5)
8
[3]>
estoy dejando la referencia a multiple-value-bind
en la respuesta, ya que es una función importante estar familiarizado.
¿cómo obtengo el primer valor? ¿Devuelve una lista? – appusajeev
@appusajeev: actualicé la respuesta –
que no es necesaria. el primer valor se pasa automáticamente al siguiente código. Necesitas el MULTIPLE-VALUE-BIND si quieres todos los valores o algunos. (values (floor 7 2)) simplemente devuelve el primero. –
Ver FLOOR, CEILING and TRUNCATE en ANSI Common Lisp.
Ejemplos (ver los números positivos y negativos):
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
Por lo general, para la división a entero TRUNCATE se utiliza.
- 1. división entera en php
- 2. Asociación en Common Lisp
- 3. Webdevelopment en Common Lisp
- 4. Secuencias en Common Lisp?
- 5. La división entera en Python
- 6. Common Lisp a Lisp-n?
- 7. La división entera siempre cero
- 8. C división entera y piso
- 9. Predijo Common Lisp
- 10. Best Common Lisp IDE
- 11. Renombrando lambda en Common Lisp
- 12. Dibujando árboles en Common Lisp
- 13. ¿Cómo obtener fracciones en una división entera?
- 14. Programación de Common Lisp Parallel
- 15. Palabra clave programática Common Lisp
- 16. Especificadores de tipo Common Lisp
- 17. Ejercicios de Common Lisp/Problemas
- 18. Common Lisp definición del paquete
- 19. Implementación del conjunto Mandelbrot en Common Lisp
- 20. Desenrolle/argumentos splat en Common Lisp
- 21. Common Lisp en Heroku con Hunchentoot?
- 22. Función de persistencia en Common Lisp
- 23. Cómo implementar Multi-Threads en Common Lisp
- 24. Representational State Transfer (REST) en Common Lisp
- 25. Uso de etiquetas en Common Lisp
- 26. raspando una tabla HTML en Common Lisp?
- 27. Transposición de listas en Common Lisp
- 28. Introspección de clase en Common Lisp
- 29. Restablecer el estado en Common Lisp
- 30. definiendo setf-expanders en Common Lisp
FLOOR hace la división por sí mismo. – Svante
Es cierto, pero también funciona con un solo argumento. –