メインコンテンツにスキップ

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 との比較は、結果がすでにわかっている (使用されている比較演算子に基づいて) ため、無意味です。

#

次のコードでは、ddouble.nan と比較されているため、この診断が生成されます。

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

一般的な修正

#

代わりに getter double.isNaN を使用してください。

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