Clojure에서 long int를 합리적인 것으로 변환하려면 어떻게해야합니까?Clojure에서 long int를 어떻게 합리적인 것으로 변환 할 수 있습니까?
user> (class (/ 5 1))
java.long.Long
Clojure에서 long int를 합리적인 것으로 변환하려면 어떻게해야합니까?Clojure에서 long int를 어떻게 합리적인 것으로 변환 할 수 있습니까?
user> (class (/ 5 1))
java.long.Long
rationalize
있다. 하지만 그것은 원하는 것을하지 않습니다. 분모가 1이면 여전히 길어집니다. 그러나 이것을 유형 테스트 용으로 사용하려는 경우 Clojure 함수 rational?
은 long에 대해 true를 반환합니다.
Ratio 유형을 원한다면 소스 코드 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)))
당신은 명시 적으로이 합리적으로 긴 변환 필요하지 않습니다 작동하지 않습니다
.
Clojure의 변환합니다
java.lang.Long
)에 (clojure.lang.Ratio
) 때 수 : 분모가 또는 1
로 만들 수 있습니다 때,1
.따라서
(type (/ 4 2)) ; java.lang.Long
(type (/ 4 3)) ; clojure.lang.Ratio
대답 주셔서 대단히 감사합니다. 나는 그것을 안다. 나는 그것을 필요로하지 않는다. 그러나 나는 그것을 원한다. 그리고 질문은 * 내가 원한다면 나는 그것을 할 수있다. –
나는 그것이 적절한 해결책이라고 생각한다. –