Der Grund dafür Double.NaN != Double.NaNist einfach:
Erwarten Sie 0/0das Gleiche wie Math.Sqrt(-3)? Und das gleiche wie Math.Sqrt(-7)?
Meiner Meinung nach gibt es einen Fehler in C #, der Equals()für NaN nicht überschrieben wird.
Assert.IsTrue(Double.NaN != Double.NaN);
Assert.IsTrue(Double.NaN.Equals(Double.NaN));
Gleichzeitig
Assert.IsTrue(Double.PositiveInfinity == Double.NegativeInfinity);
Assert.IsTrue(Double.PositiveInfinity.Equals(Double.PositiveInfinity));
// same for Double.NegativeInfinity and Single
Verwenden Sie statische Funktionen für Doubleund Single, z
Double.IsNaN(value) && Double.IsInfinity(value);
Oder genauer:
Double.IsPositiveInfinity(value);
Double.IsNegativeInfinity(value);