在Clojure中,我编写了一个简单的函数,只是为了实现最终实现调试。
(= 3 3)
是true
BUT
(= 3.0 3)
是false
为什么?
我知道浮点运算存在问题,其中不应直接比较两个浮点值。
即使在Java中,3.0和3也是相同的,可能还有很多其他语言。
答案 0 :(得分:5)
如果是同一类型,它们就不一样了。
注意java的equal
如何也返回false:
> (.equals 3.0 3)
false
或考虑以下java程序:
public static void main(String []args){
Integer i = 1000;
System.out.println(i.equals(1000.0));
System.out.println(i==1000.0);
}
<强>输出:强>
假
真
=
平等。如果x等于y,则返回true,否则返回false。与...一样 Java x.equals(y)...
因此,如果您想比较nums的值,请使用==
==
如果nums都具有等效值,则返回非nil value(与类型无关),否则为false