unnecessary_ nan_ comparison
Details about the 'unnecessary_nan_comparison' diagnostic produced by the Dart analyzer.
A double can't equal 'double.nan', so the condition is always 'false'.
A double can't equal 'double.nan', so the condition is always 'true'.
Description
#
The analyzer produces this diagnostic when a value is compared
to
double.nan using either == or
!=.
Dart follows the
IEEE 754
floating-point standard for the semantics of floating point
operations, which states that, for any floating point value
x (including NaN, positive infinity, and negative
infinity),
NaN == xis always falseNaN != xis always true
As a result, comparing any value to NaN is pointless because the result is already known (based on the comparison operator being used).
Example
#
The following code produces this diagnostic because
d is being compared to double.nan:
bool isNaN(double d) => d == double.nan;
Common fixes
#Use the getter double.isNaN instead:
bool isNaN(double d) => d.isNaN;
除非另有说明,文档之所提及适用于 Dart 3.12.2 版本报告页面问题.