在Clojure中,如何将long int转换为rational?
如何在Clojure中将长整型转换为有理数 这是行不通的:在Clojure中,如何将long int转换为rational?,clojure,rational-number,Clojure,Rational Number,如何在Clojure中将长整型转换为有理数 这是行不通的: user> (class (/ 5 1)) java.long.Long 您不需要显式地将long转换为rational 克洛朱尔将皈依 一个有理(clojure.lang.Ratio)变成一个long(java.lang.long),当它可以时:当分母是或可以是1 必须时将long或其他int转换为有理数:当除法不能解析为1分母时 因此 (类型(/4-2)) ; java.lang.Long (类型(/4-3)) ; cl
user> (class (/ 5 1))
java.long.Long
您不需要显式地将long转换为rational
克洛朱尔将皈依
- 一个有理(
)变成一个long(clojure.lang.Ratio
),当它可以时:当分母是或可以是java.lang.long
李>1
- 必须时将long或其他int转换为有理数:当除法不能解析为
分母时李>1
(类型(/4-2))
; java.lang.Long
(类型(/4-3))
; clojure.lang.Ratio
您不需要显式地将long转换为rational
克洛朱尔将皈依
- 一个有理(
)变成一个long(clojure.lang.Ratio
),当它可以时:当分母是或可以是java.lang.long
李>1
- 必须时将long或其他int转换为有理数:当除法不能解析为
分母时李>1
(类型(/4-2))
; java.lang.Long
(类型(/4-3))
; clojure.lang.Ratio
有。但这并不是你想要的——如果分母是1,它仍然返回long。但是,如果出于类型测试的目的,Clojure函数将为long返回true
如果您真的想要比率类型,我认为您必须自己编写,因为rationalize
的源代码会立即深入底层Java
(clojure.lang.Ratio.
(. BigInteger (valueOf 3))
(. BigInteger (valueOf 1)))
; 3/1
也许:
(defn myrationalize
[num]
(if (integer? num)
(clojure.lang.Ratio.
(. BigInteger (valueOf num))
(. BigInteger (valueOf 1)))
(rationalize num)))
有一个。但这并不是你想要的——如果分母是1,它仍然返回long。但是,如果出于类型测试的目的,Clojure函数将为long返回true
如果您真的想要比率类型,我认为您必须自己编写,因为rationalize
的源代码会立即深入底层Java
(clojure.lang.Ratio.
(. BigInteger (valueOf 3))
(. BigInteger (valueOf 1)))
; 3/1
也许:
(defn myrationalize
[num]
(if (integer? num)
(clojure.lang.Ratio.
(. BigInteger (valueOf num))
(. BigInteger (valueOf 1)))
(rationalize num)))
非常感谢你的回答。我知道。我不需要它,但我想要它,问题是如果我想要的话我怎么做。非常感谢你的回答。我知道。我不需要它,但我想要它,问题是如果我想的话,我怎么做。