The predefined floating-point comparison operators are:
bool operator ==(float x, float y); bool operator ==(double x, double y); bool operator !=(float x, float y); bool operator !=(double x, double y); bool operator <(float x, float y); bool operator <(double x, double y); bool operator >(float x, float y); bool operator >(double x, double y); bool operator <=(float x, float y); bool operator <=(double x, double y); bool operator >=(float x, float y); bool operator >=(double x, double y);
The operators compare the operands according to the rules of the IEEE 754 standard:
false
for all operators except !=
, and true
for the !=
operator. For any two operands, x
!=
y
always produces the same result as !(x
==
y)
. However, when one or both operands are NaN, the <
, >
, <=
, and >=
operators do not produce the same results as the logical negation of the opposite operator. For example, if either of x
and y
is NaN, then x
<
y
is false
, but !(x
>=
y)
is true
.–8 < –max < ... < –min < –0.0 == +0.0 < +min < ... < +max < +8
where min
and max
are the smallest and largest positive finite values that can be represented in the given floating-point format. Notable effects of this ordering are: