Quando faccio (/ 411 125)
, non capisco in termini di decimali. Come lo faccio?Quando divido i numeri in clojure ottengo una frazione, come ottengo il decimale?
risposta
user> (float (/ 411 125))
3.288
user> (double (/ 411 125))
3.288
Come documented, la divisione intera produce numeri razionali. Prova
(/ 411.0 125)
Se si utilizza un flottante per il dividendo, si otterrà una risposta decimale.
(/ 22.0 7) -> 3.142857142857143
C'è anche la funzione (unchecked-remainder x y) disponibile.
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
(float 411/125)
è un'altra variante se si è data direttamente le cifre, che è il caso se si sta semplicemente utilizzando il REPL come una calcolatrice. Sfortunatamente si tratta di alcuni caratteri più lunghi della soluzione di Jonathan Feinberg e ire_and_curses. ;)
anche questo funzionerà:
(/ 22. 7) => 3.142857142857143
Dovresti anche includere alcune spiegazioni sul perché il tuo codice funziona e cosa c'è di sbagliato nel codice originale. – vyegorov
non c'è niente di sbagliato in altre soluzioni, ma - come altre soluzioni - sto rappresentando un altro modo di pensare in doppio. per quanto riguarda il motivo per cui funziona; non sono sicuro, ma penso che il clojure l'abbia ereditato da java che accetta qualsiasi cifra con punto decimale come Double anche se è formattata con una posizione decimale zero – Samir
doc non funziona per me. Ho la stessa versione del clojure. Devo importare qualcosa? – justinhj
Scusa, avrei dovuto dirlo - è una sessione REPL gestita da [leiningen] (http://leiningen.org). È * lo * strumento di gestione del progetto (e quindi della dipendenza) per i progetti Clojure. Una volta che lo fai andare, non te ne pentirai. –
Sto usando leiningen anche – justinhj