Why doesn't infinity comparison follow the logic applied to NaNs? This code prints out false
three times:
double a = Double.NaN;
double b = Double.NaN;
System.out.println(a == b); // false
System.out.println(a < b); // false
System.out.println(a > b); // false
However, if I change Double.NaN
to Double.POSITIVE_INFINITY
, I get true
for equality, but false
for the greater-than and less-than comparisons:
double a = Double.POSITIVE_INFINITY;
double b = Double.POSITIVE_INFINITY;
System.out.println(a == b); // true
System.out.println(a < b); // false
System.out.println(a > b); // false
This seems dangerous. Assuming that infinite values result from overflows, I imagine it's more likely that two variables that ended up as infinities wouldn't actually be equal in perfect arithmetic.
Aucun commentaire:
Enregistrer un commentaire