2009-10-20 12 views

Respuesta

78
user> (float (/ 411 125)) 
3.288 
user> (double (/ 411 125)) 
3.288 
13

Como documented, la división entera produce números racionales. Pruebe

(/ 411.0 125) 
7

Si utiliza un flotador para el dividendo, obtendrá una respuesta decimal.

(/ 22.0 7) -> 3.142857142857143 

También está disponible la función (unchecked-remainder x y).

27
user=> (clojure-version) 
"1.4.0" 

user=> (doc quot) 
------------------------- 
clojure.core/quot 
([num div]) 
    quot[ient] of dividing numerator by denominator. 
nil 

user=> (quot 411 125) 
3 
+0

doc no funciona para mí. Tengo la misma versión de clojure. ¿Debo importar algo? – justinhj

+0

Lo siento, debería haberlo dicho, es una sesión de REPL administrada por [leiningen] (http://leiningen.org). Es la herramienta de administración del * the * project (y por lo tanto de la dependencia) para los proyectos de Clojure. Una vez que lo haces funcionar, no te arrepentirás. –

+0

Estoy usando leiningen también – justinhj

1

(float 411/125) es otra variante si se le da los números directamente, que es el caso si usted está usando el REPL como una calculadora. Desafortunadamente, este es unos pocos caracteres más que la solución de Jonathan Feinberg y ire_and_curses. ;)

4

aunque esto funcionará:

(/ 22. 7) => 3.142857142857143 
+0

También debe incluir algunas explicaciones sobre por qué su código funciona y qué está mal en el código original. – vyegorov

+0

no hay nada malo con otras soluciones, pero, al igual que otras soluciones, represento otra forma de pensar en dobles. en cuanto a por qué está funcionando; No estoy seguro, pero creo que Clojure lo heredó de Java, que acepta cualquier dígito con punto decimal como Doble, incluso si está formateado con una posición decimal cero – Samir

Cuestiones relacionadas