# V3076. Comparison with 'double.NaN' is meaningless. Use 'double.IsNaN()' method instead.

Анализатор обнаружил сравнение переменной типа float или double с float.NaN или double.NaN. В соответствии с документацией, если два значения double.NaN сравниваются с помощью оператора == , то результатом будет false. Таким образом какое бы значение типа double ни сравнивали с double.NaN, в результате всегда будет false.

Рассмотрим пример:

    void Func(double d) {
      if (d == double.NaN) {
        ....
      }
    }

Проверка на NaN с помощью операторов == и != некорректна. Вместо этого следует использовать методы float.IsNaN() или double.IsNaN(). Исправленный вариант:

    void Func(double d) {
      if (double.IsNaN(d)) {
        ....
      }
    }

Данная диагностика классифицируется как:

CWE-570 CWE-571

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3076.