4

在 Clojure 中,我写了一个简单的函数,一直调试到最后才实现。

(= 3 3)

true

(= 3.0 3)

false

为什么?

我知道浮点运算存在问题,不应该直接比较两个浮点值。

即使在 Java 中,3.0 和 3 也将是相同的,可能还有很多其他语言。

4

1 回答 1

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 都具有等效值(与类型无关),则返回非 nil,否则返回 false

于 2013-04-12T11:55:41.523 回答