Lý do Double.NaN != Double.NaNrất đơn giản:
Bạn có mong đợi 0/0để được giống như Math.Sqrt(-3)? Và giống như Math.Sqrt(-7)?
Có một lỗi trong C # theo ý kiến của tôi, nơi Equals()không được ghi đè cho NaN.
Assert.IsTrue(Double.NaN != Double.NaN);
Assert.IsTrue(Double.NaN.Equals(Double.NaN));
Đồng thời
Assert.IsTrue(Double.PositiveInfinity == Double.NegativeInfinity);
Assert.IsTrue(Double.PositiveInfinity.Equals(Double.PositiveInfinity));
Sử dụng các hàm tĩnh cho Doublevà Single, ví dụ:
Double.IsNaN(value) && Double.IsInfinity(value);
Hoặc cụ thể hơn:
Double.IsPositiveInfinity(value);
Double.IsNegativeInfinity(value);