C# – How to compare a float to NaN if comparisons to NaN always return false


I have a float value set to NaN (seen in the Watch Window), but I can't figure out how to detect that in code:

if (fValue == float.NaN) // returns false even though fValue is NaN

Best Solution

You want float.IsNaN(...). Comparisons to NaN always return false, no matter what the value of the float is. It's one of the quirks of floating points.

That means you can do this:

if (f1 != f1) { // This conditional will be true if f1 is NaN.

In fact, that's exactly how IsNaN() works.