Clojure:=vs==
我正在努力理解为什么Clojure:=vs==,clojure,equality,Clojure,Equality,我正在努力理解为什么 (= 1 1.0) 计算结果为false (== 1 1.0) 计算结果为true。根据调查显示,==似乎只对数字起作用,但除此之外,似乎差别不大。那么,我遗漏了什么呢?==检查数学等价性=使用数字检查等效性的方式与大小无关(如适用),但对表示形式要求严格: user> (= (float 1.0) (double 1.0)) true user> (= (int 1) (byte 1)) true user> (= (int 1) (double 1
(= 1 1.0)
计算结果为false
(== 1 1.0)
计算结果为
true
。根据调查显示,==
似乎只对数字起作用,但除此之外,似乎差别不大。那么,我遗漏了什么呢?==
检查数学等价性<代码>=使用数字检查等效性的方式与大小无关(如适用),但对表示形式要求严格:
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
假设,原因是浮点表示可能会失去精度,不应将其视为等同于整数或精确表示。REPL是您最好的朋友。(doc=)(doc=)这在lighttable下返回“nil”,你知道为什么吗?