Сравнение значения NaN в C#
Давайте теперь будем сравнивать NaN.
Такое значение получают, например, из 0.0/0.0.
Оно не равно само себе, поэтому сравнение
с == дает ложь.
Давайте сравним это значение с собой:
double num = 0.0 / 0.0;
if (num == num) {
Console.WriteLine("Y");
} else {
Console.WriteLine("N"); // this branch runs
}
Неравенство с собой, наоборот, истинно:
double num = 0.0 / 0.0;
if (num != num) {
Console.WriteLine("Y"); // this branch runs
} else {
Console.WriteLine("N");
}
То же видно на константе double.NaN:
if (double.NaN == double.NaN) {
Console.WriteLine("Y");
} else {
Console.WriteLine("N"); // this branch runs
}
Дано число:
double num = 0.0 / 0.0;
Если число равно само себе, выведите "Y", иначе "N".