unnecessary_nan_comparison
双精度浮点数(double)不可能等于 'double.nan',因此该条件始终为 'false'。
双精度浮点数(double)不可能等于 'double.nan',因此该条件始终为 'true'。
描述
#当使用 ==
或 !=
将值与 double.nan
进行比较时,分析器会产生此诊断。
Dart 遵循 IEEE 754 浮点标准来定义浮点运算的语义,该标准规定,对于任何浮点数值 x
(包括 NaN、正无穷大和负无穷大),
NaN == x
始终为 falseNaN != x
始终为 true
因此,将任何值与 NaN 进行比较是没有意义的,因为结果是已知的(取决于使用的比较运算符)。
示例
#以下代码会产生此诊断,因为 d
正在与 double.nan
进行比较
dart
bool isNaN(double d) => d == double.nan;
常见修复方法
#请改用 getter double.isNaN
dart
bool isNaN(double d) => d.isNaN;