错误的 NaN 比较¶
ID: java/comparison-with-nan
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- correctness
Query suites:
- java-security-and-quality.qls
特殊的浮点数 NaN
被定义为与所有其他浮点数(包括自身)不同,当使用相等运算符 ==
和 !=
进行比较时。
建议¶
要检查变量 x
是否为 NaN
,请使用 java.lang.Float
和 java.lang.Double
上定义的 isNaN
方法。
示例¶
表达式 x == Double.NaN
始终为假。此表达式应替换为 Double.isNaN(x)
,它可以准确地识别 x
是否等于 Double.NaN
。
参考资料¶
Java 语言规范:数值相等运算符 == 和 !=.