Clojure では、最終的にそれを実現するためだけにデバッグを続ける単純な関数を作成しました。
(= 3 3)
はtrue
しかし
(= 3.0 3)
はfalse
なんで?
浮動小数点演算には、2 つの浮動小数点値を直接比較してはならないという問題があることを知っています。
Java でさえ、3.0 と 3 は同等であり、おそらく他の多くの言語でも同様です。
Clojure では、最終的にそれを実現するためだけにデバッグを続ける単純な関数を作成しました。
(= 3 3)
はtrue
しかし
(= 3.0 3)
はfalse
なんで?
浮動小数点演算には、2 つの浮動小数点値を直接比較してはならないという問題があることを知っています。
Java でさえ、3.0 と 3 は同等であり、おそらく他の多くの言語でも同様です。
同じタイプの場合はそうではありません。
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 を返します。