CA2242: Test for NaN correctly
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CA2242: Test for NaN correctly.
TypeName|TestForNaNCorrectly|
|CheckId|CA2242|
|Category|Microsoft.Usage|
|Breaking Change|Non Breaking|
An expression tests a value against F:System.Single.Nan or F:System.Double.Nan.
Double.NaN, which represents not-a-number, results when an arithmetic operation is undefined. Any expression that tests equality between a value and Double.NaN always returns false. Any expression that tests inequality between a value and Double.NaN always returns true.
To fix a violation of this rule and accurately determine whether a value represents Double.NaN, use M:System.Single.IsNan(System.Single) or M:System.Double.IsNan(System.Double) to test the value.
Do not suppress a warning from this rule.
The following example shows two expressions that incorrectly test a value against Double.NaN and an expression that correctly uses Double.IsNaN to test the value.