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);
}

理由

知らん。おそらく浮動小数点数を格納するときのビットパターンの問題と推測される。仕様にそう書いてある、というのが正解かもしれない。