>
>
>
V3076. Comparison with 'double.NaN' is …


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)) {
    ....
  }
}

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

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