Can anyone explain why this happens? http://play.golang.org/p/QTaHpUm5P7
Apologies for not pasting the code here as well but I'm on mobile ATM.
I know I could use math.IsNaN() but I'm using the comparison operator for all my tests cases.
Can anyone explain why this happens? http://play.golang.org/p/QTaHpUm5P7
Apologies for not pasting the code here as well but I'm on mobile ATM.
I know I could use math.IsNaN() but I'm using the comparison operator for all my tests cases.
Generally, NaN
is not considered equal to any number, including itself. That's because it represnts a number outside the range of representation.
Hence there's no guarantee that you don't have two different numbers outside the representation, such as 0 / 0
and the square root of -1.
In fact, many systems rely on this inequality to implement isNan()
as something like:
define isNaN(x):
return x != x
From the NaN Wikipedia page, IEEE 754 defines that:
−∞ = −∞
,+∞ = +∞
andx ≠ NaN
for any x
, including NaN
.This is a duplicate of What is the rationale for all comparisons returning false for IEEE754 NaN values? - NaN never equals itself in IEE754, the linked answer explains why.