4

Clojure では、最終的にそれを実現するためだけにデバッグを続ける単純な関数を作成しました。

(= 3 3)

true

しかし

(= 3.0 3)

false

なんで?

浮動小数点演算には、2 つの浮動小数点値を直接比較してはならないという問題があることを知っています。

Java でさえ、3.0 と 3 は同等であり、おそらく他の多くの言語でも同様です。

4

1 に答える 1

5

同じタイプの場合はそうではありません。

Javaequalも 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)...

したがって、数値の値を比較する場合は、次を使用します==

==

すべての num が同等の値 (型に依存しない) を持つ場合は非 nil を返し、そうでない場合は false を返します。

于 2013-04-12T11:55:41.523 に答える