【发布时间】:2010-11-11 20:09:27
【问题描述】:
谁能给我解释一下?在 C# 中 double.NaN 不等于 double.NaN
bool huh = double.NaN == double.NaN; // huh = false
bool huh2 = double.NaN >= 0; // huh2 = false
bool huh3 = double.NaN <= 0; // huh3 = false
我可以将什么常数与 double.NaN 进行比较并得到正确的结果?
【问题讨论】:
-
只是为了解释你的胡说:NaN 等于没有,甚至不等于它本身。这是根据定义。 en.wikipedia.org/wiki/NaN
-
我认为不幸的是上下文丢失了。如果我们有两个双精度数,并且都被赋值为 NaN 以表示实际值 1/0。它们应该相等,但由于上下文丢失,它们被视为不相等
-
数学上正确。为什么有人会认为一个 nan 会等于另一个? sqrt( -1 ) != 1/0
-
就像SQL中的
NULL -
@MichaelMeadows 1/0 是 Inf,而不是 NaN。