Clojure:= vs ==

hel*_*hod 12 equality clojure

我正在努力理解为什么

(= 1 1.0)
Run Code Online (Sandbox Code Playgroud)

计算结果为false,而

(== 1 1.0)
Run Code Online (Sandbox Code Playgroud)

评估为true.根据文档,==似乎只是在研究数字,但除此之外似乎没有太大的区别.那么,我错过了什么?

noi*_*ith 21

==检查数学等价.=数字检查等效的方式与适用的大小无关,但对表示严格:

user> (= (float 1.0) (double 1.0))
true
user> (= (int 1) (byte 1))
true
user> (= (int 1) (double 1))
false
user> (= 0.5 (/ 1 2))
false
user> (== 0.5 (/ 1 2))
true
Run Code Online (Sandbox Code Playgroud)

假设,推理是浮点的表示可能失去精度,不应被视为等价于整数或精确表示.