¿Cuál es la mejor manera de redondear números en Clojure?
rounding (3)
Intente esto, que produce un par del piso y el techo para un numerador no negativo y un denominador positivo:
(fn [num den] (let [q (quot num den)
r (rem num den)]
[q (if (= 0 r) q (+ 1 q))])
Esta es una fácil. Pero de todos modos, creo que es una buena idea que se responda esta pregunta aquí para una referencia más rápida y fácil.
Esta operacion:
(/ 3 2)
produce esto:
3/2
Necesito una función para redondear hacia arriba, lo que daría 2 y otra para redondear hacia abajo, lo que daría 1.
Puede java interop (Math / (floor | ceil). Por ejemplo:
user=> (int (Math/floor (/ 3 2)))
1
user=> (int (Math/ceil (/ 3 2)))
2
lanzarlo al tipo deseado
(int 3/2)
=> 1
(double 3/2)
=> 1.5
(float 3/2)
=> 1.5
luego envolver eso en una llamada a Math.round
etc.
user> (Math/round (double 3/2))
2
user> (Math/floor (double 3/2))
1.0
user> (Math/ceil (double 3/2))
2.0