错误的 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 语言规范:数值相等运算符 == 和 !=.