x - x
can be +0.0
or NaN
. There are no other values it can take in IEEE 754 arithmetics in round-to-nearest (and in Java, the rounding mode is always round-to-nearest). The subtraction of two identical finite values is defined as producing +0.0
in this rounding mode. Mark Dickinson, in comments below, cites the IEEE 754 standard as saying, section 6.3:
When the sum of two operands with opposite signs (or the difference of two operands with like signs) is exactly zero, the sign of that sum (or difference) shall be +0 in all rounding-direction attributes except roundTowardNegative […].
This page shows that in particular 0.0 - 0.0
and -0.0 - (-0.0)
are both +0.0
.
Infinities and NaN both produce NaN when subtracted from themselves.