web-dev-qa-db-ja.com

clojureで数値を除算すると、分数が得られますが、小数を取得するにはどうすればよいですか?

私がする時 (/ 411 125)、10進数では得られません。それ、どうやったら出来るの?

68
unj2
user> (float (/ 411 125))
3.288
user> (double (/ 411 125))
3.288
84
Brian Carper
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
30
Jacek Laskowski

ドキュメント化 のように、整数除算は有理数を生成します。試して

(/ 411.0 125)
14

配当にフロートを使用すると、小数の答えが得られます。

(/ 22.0 7) -> 3.142857142857143

(unchecked-remainder x y) 関数も利用可能です。

7
ire_and_curses

これでも動作します:

(/ 22. 7) => 3.142857142857143
6
Samir

(float 411/125)は、数値を直接与えられた場合のもう1つの変形です。これは、単にREPLを計算機として使用している場合です。およびire_and_curses。;)

1
user1460043