When working with float or double primitive types, it may be required to deal with NaN (Not a Number) values. When tested against itself, NaN will always answer false as long as the primitive wrapper type is not used. When the wrapper is used, it will always be true. This property is illustrated in the code snipped below.
In order to remove any ambiguity, this rule raises an issue every time an equality test is used with double, Double, float or Float, when both sides of the test are the same variable. The isNaN(...) methods from Double and Float should be preferred.