跳到主内容

unnecessary_nan_comparison

双精度浮点数(double)不可能等于 'double.nan',因此该条件始终为 'false'。

双精度浮点数(double)不可能等于 'double.nan',因此该条件始终为 'true'。

描述

#

当使用 ==!= 将值与 double.nan 进行比较时,分析器会产生此诊断。

Dart 遵循 IEEE 754 浮点标准来定义浮点运算的语义,该标准规定,对于任何浮点数值 x (包括 NaN、正无穷大和负无穷大),

  • NaN == x 始终为 false
  • NaN != x 始终为 true

因此,将任何值与 NaN 进行比较是没有意义的,因为结果是已知的(取决于使用的比较运算符)。

示例

#

以下代码会产生此诊断,因为 d 正在与 double.nan 进行比较

dart
bool isNaN(double d) => d == double.nan;

常见修复方法

#

请改用 getter double.isNaN

dart
bool isNaN(double d) => d.isNaN;