C# 单曲';你不平等吗?
我在调试一些单元测试时遇到了这个问题,这些测试将返回的单个数组与预期结果进行比较C# 单曲';你不平等吗?,c#,nan,C#,Nan,我在调试一些单元测试时遇到了这个问题,这些测试将返回的单个数组与预期结果进行比较 System.Single.NaN == System.Single.Nan; 单元测试预期为true,但其计算结果为false。当single的其他静态方法返回true时,为什么这个值为false?NaN不是常数吗 System.Single.MaxValue == System.Single.MaxValue; System.Single.Epsilon == System.Single.Epsilon; n
System.Single.NaN == System.Single.Nan;
单元测试预期为true,但其计算结果为false。当single的其他静态方法返回true时,为什么这个值为false?NaN不是常数吗
System.Single.MaxValue == System.Single.MaxValue;
System.Single.Epsilon == System.Single.Epsilon;
null == null;
声明:“两个NaN值被认为彼此不相等。”但这个问题是出于好奇,为什么这比其他任何东西都重要。,因为IEEE 754标准(用于
浮点
和双
的标准)这么说
引用
与NaN进行比较时,即使与自身进行比较,也始终会返回无序结果。比较谓词为信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是非信令的,因此可以使用返回false的x=x来测试x是否是安静的NaN。如果其他标准比较谓词接收到NaN操作数,则它们都会发出信号,该标准还提供这些其他谓词的非信号版本。谓词isNaN(x)确定某个值是否为NaN,并且从不发出异常信号,即使x是发出信号的NaN
(请注意,.NET不支持信令NaN,并且可能将其视为非信令)因为IEEE 754标准(用于
浮点
和双精度
的标准)这样说
引用
与NaN进行比较时,即使与自身进行比较,也始终会返回无序结果。比较谓词为信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是非信令的,因此可以使用返回false的x=x来测试x是否是安静的NaN。如果其他标准比较谓词接收到NaN操作数,则它们都会发出信号,该标准还提供这些其他谓词的非信号版本。谓词isNaN(x)确定某个值是否为NaN,并且从不发出异常信号,即使x是发出信号的NaN
(请注意,.NET不支持信令NaN,可能将其视为非信令)有人曾经谈论过Double.NaN
。在那篇文章中我能找到的最好的答案是“因为这就是它的定义”
我同意,这不是很令人满意。曾经有人谈论过《双重密码》.NaN。在那篇文章中我能找到的最好的答案是“因为这就是它的定义”
不太令人满意,我同意。没错。NaN==NaN总是错误的。这是一种测试某个变量是否等于NaN的方法,如 如果(x!=x) //做点什么
这是正确的。NaN==NaN总是错误的。这是一种测试某个变量是否等于NaN的方法,如 如果(x!=x) //做点什么
如果你会考虑楠实际上意味着什么,也许更容易理解为什么南斯永远是不平等的。“A”是NaN,“b”也是NaN,“其他b****s”仍然是NaN。他们平等吗?不,如果你想知道楠实际上意味着什么,那也许更容易理解为什么NANS永远不平等。“A”是NaN,“b”也是NaN,“其他b****s”仍然是NaN。他们平等吗?不