javaのfloat,double型で、0.0には符号がある。
検証コード
public static void main(String[] args) { int i1 = 0; int i2 = -0; System.out.print("0:"+i1); System.out.println(" -0:"+i2); double d1 = 0.0; double d2 = -0.0; System.out.print("0.0:"+d1); System.out.println(" -0.0:"+d2); }
理由
知らん。おそらく浮動小数点数を格納するときのビットパターンの問題と推測される。仕様にそう書いてある、というのが正解かもしれない。