So [apparently equality for NaN doesn't make sense](http://mail.python.org/pipermail/python-list/2005-July/330042.html_. (NaN or Not a Number is division by zero, and other other operations that return non numbers, which is different than infinity or negative infinity). That makes sense, but sometimes you want to know if a number is really not a number. So how does one do so?
is_nan1). But if you coerce to string and compare against
"nan" that works:
matt@r52 $ python Python 2.4.4 (#1, May 12 2007, 23:48:56) [GCC 4.1.1 (Gentoo 4.1.1-r3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> a = float("NaN") >>> b = 0 >>> c = float("nan") >>> d = float("infinity") >>> >>> def is_nan1(num): ... return num == float("NaN") ... >>> print is_nan1(a) False >>> print is_nan1(b) False >>> print is_nan1(c) False >>> print is_nan1(d) False >>> >>> >>> def is_nan2(num): ... return str(num) == "nan" ... >>> print is_nan2(a) True >>> print is_nan1(b) False >>> print is_nan2(c) True >>> print is_nan2(d) False >>>
math.isnan is available