为什么clojure clojure.lang.Ratio 3/2 not = 1.5

ipa*_*ian 10 math clojure

我失去了暴乱比例.我无法理解.为什么平等和不平等测试以这种方式表现?

(= 3/2 1.5)
;; false
(>= 3/2 1.5)
;; true
(> 3/2 1.5)
;;false
(not= 3/2 1.5)
;; true
Run Code Online (Sandbox Code Playgroud)

Art*_*ldt 12

使用==在您想知道是否有两个数字代表不论种类相同数量的数值的比较:

user> (= 3/2 1.5)
false
user> (== 3/2 1.5)
true
Run Code Online (Sandbox Code Playgroud)

但是请记住,这==仅适用于数字,并抛出如果给的东西不是一个数字.

user> (== :1 :1)
ClassCastException clojure.lang.Keyword cannot be cast to java.lang.Number  clojure.lang.Numbers.equiv (Numbers.java:206)
Run Code Online (Sandbox Code Playgroud)