C# 等于()表示.NET中的双值。执行是否错误?
我一直认为“==”和Equals()对于双值给出相同的结果……但事实并非如此 范例C# 等于()表示.NET中的双值。执行是否错误?,c#,equals,C#,Equals,我一直认为“==”和Equals()对于双值给出相同的结果……但事实并非如此 范例 var a = Double.NaN; Console.WriteLine(a == a); Console.ReadKey(); 打印“假” “真的” 所以,为什么浮点数的Equals()方法实现不遵循浮点数规范,即如果数字是NaN-它不等于任何东西,甚至不等于它本身? 另外,我合并了我的问题,并将尽快删除关于NaN的另一个问题 p.p.S 等于实现(.NET 4,感谢Ani)
var a = Double.NaN;
Console.WriteLine(a == a);
Console.ReadKey();
打印“假”
“真的”
所以,为什么浮点数的Equals()方法实现不遵循浮点数规范,即如果数字是NaN-它不等于任何东西,甚至不等于它本身?
另外,我合并了我的问题,并将尽快删除关于NaN的另一个问题
p.p.S
等于实现(.NET 4,感谢Ani)
var a = Double.NaN;
Console.WriteLine(a.Equals(a));
Console.ReadKey();
public bool Equals(double obj)
{
return ((obj == this) || (IsNaN(obj) && IsNaN(this)));
}