С # NaN различия в сравнении между Equals () и ==

Проверьте это:

    var a = Double.NaN;

    Console.WriteLine(a == a);
    Console.ReadKey();

Печатает «Ложь»

    var a = Double.NaN;

    Console.WriteLine(a.Equals(a));
    Console.ReadKey();

Печатает «Верно»!

Почему печатает «Верно»? Из-за спецификации чисел с плавающей запятой значение NaN не равно самому себе! Похоже, что метод Equals () реализован неправильно ... Я что-то упустил?

15
задан illegal-immigrant 11 April 2011 в 16:50
поделиться