← 返回首页
Wrong NaN comparison — CodeQL query help documentation CodeQL docs
CodeQL documentation
CodeQL resources

Wrong NaN comparison

ID: java/comparison-with-nan Kind: problem Security severity: Severity: error Precision: very-high Tags: - quality - reliability - correctness Query suites: - java-code-quality.qls - java-security-and-quality.qls

Click to see the query in the CodeQL repository

The special floating-point number NaN is defined to be different from all other floating-point numbers, including itself, when compared using the equality operators, == and !=.

Recommendation

To check whether a variable x is NaN use the method isNaN that is defined on both java.lang.Float and java.lang.Double.

Example

The expression x == Double.NaN is always false. This expression should be replaced by Double.isNaN(x), which accurately identifies whether x is equal to Double.NaN.

References