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;