Сравнение значений NaN: равно ли NaN NaN?

На английском языке утверждение «NAN равно NAN?» спрашивает, равно ли значение «NAN» (что означает «Не число») самому себе.

При работе со значениями NaN в программировании важно отметить, что NaN не равно никакому другому значению, включая само себя. Такое поведение определяется стандартом чисел с плавающей запятой IEEE 754, который широко используется для представления чисел с плавающей запятой и управления ими.

Вот несколько способов проверить равенство NaN на разных языках программирования:

  1. В Python:

    import math
    nan_value = float('nan')
    print(math.isnan(nan_value))  # Output: True
  2. В JavaScript:

    let nanValue = NaN;
    console.log(Number.isNaN(nanValue)); // Output: true
  3. В Java:

    double nanValue = Double.NaN;
    System.out.println(Double.isNaN(nanValue)); // Output: true
  4. В C++:

    #include <cmath>
    #include <iostream>
    int main() {
       double nanValue = std::numeric_limits<double>::quiet_NaN();
       std::cout << std::isnan(nanValue) << std::endl; // Output: 1 (true)
       return 0;
    }
  5. В C#:

    double nanValue = double.NaN;
    Console.WriteLine(double.IsNaN(nanValue)); // Output: True