【发布时间】:2019-12-12 02:54:21
【问题描述】:
代码(来自交互式外壳):
> var a = new Dictionary<float, string>();
> a.Add(float.NaN, "it is NaN");
> a[float.NaN]
"it is NaN"
所以有可能,但是安全吗?
【问题讨论】:
-
“安全”与什么相比?它可以编译...你期望什么结果(假设你阅读stackoverflow.com/questions/1145443/…)?
-
是的,它在上下文中是“安全的”,即使有些出乎意料。
float.NaN == float.NaN是 false(根据标准 IEEE 754 规则),float.NaN.Equals(float.NaN)是 true ……原因。 (.NET Standard 3.0 更改了一些 FP 处理规则,是否包括 Equal'ity?)
标签: c#