跳到主內容

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;