以下の内容はhttps://odashinsuke.hatenablog.com/entry/20091017/1255745640より取得しました。


Groovy って NaN の比較が Java と違う…

ネタ元:
なんぞこれ。NaNってなんなんすか?あのね、非数のことだよ。なんだかナンのカレーが食べたくなるね。ヒ素じゃなくてよかった。
びっくりした事


普段、double.NaN を意識するようなプログラムを書いていないので新鮮でした。そこで、早速 Groovy でも試してみました。

とりあえず Java でも

public class Test {
  public static void main(String[] args) {
    double d1 = 0.0 / 0;
    double d2 = d1;
    check(d1, d2); // "NG"
  }
  private static void check(double d1, double d2) {
    if (d1 == d2) System.out.println("OK");
    else System.out.println("NG");
  }
}

Groovy

double d1 = 0.0d / 0
double d2 = d1
println d1 // NaN
if (d1 == d2) println "OK"
else println "NG"
// OK が出力された…

Java では、NG になりましたが、Groovy では何故か OK に…。Groovy のバージョンは 1.6.3 です。
あと Groovy でハマりそうになったのが、0.0d の "d" を書くの忘れて、ゼロ除算例外が発生したこと。Groovy だと、接尾語付けないと BigDecimal になっちゃうんだった。





以上の内容はhttps://odashinsuke.hatenablog.com/entry/20091017/1255745640より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14