【发布时间】:2012-07-16 03:24:39
【问题描述】:
我在调试一些将返回的单个数组与预期结果进行比较的单元测试时遇到了这个问题。
System.Single.NaN == System.Single.Nan;
单元测试预期为真,但结果为假。当 single 的其他静态方法返回 true 时,为什么这会评估为 false? NaN 不是常量吗?
System.Single.MaxValue == System.Single.MaxValue;
System.Single.Epsilon == System.Single.Epsilon;
null == null;
http://msdn.microsoft.com/en-us/library/system.single.nan.aspx 声明:“两个 NaN 值被认为是不相等的。”但这个问题是出于好奇,为什么这比其他任何事情都重要。
【问题讨论】:
-
如果您考虑 NaN 的实际含义,可能会更容易理解为什么 NaN 永远不相等。 “A”是 NaN,“b”也是 NaN,“其他一些 B****s”仍然是 NaN。他们平等吗?没有。