By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,199 Members | 1,120 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,199 IT Pros & Developers. It's quick & easy.

Surprise with special floating point values

P: n/a
Hi all,

While trying to use simplejson under Python 2.4.3 I have been
investigating the handling of special floating point values and found
that both Python 2.4 and 2.5 return False when comparing a NaN with
itself. Although surprising, I imagine it could also be correct since
NaN is not a number. But is it correct?

Notice the result of comparing c with itself in the following Python
2.5 session (it works the same on Python 2.4.3) under Win32::

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>a = 1e300 * 1e300
a
1.#INF
>>b = 1e66666
b
1.#INF
>>a == b
True
>>c = a - a
c
-1.#IND
>>d = b - b
d
-1.#IND
>>c == d
False
>>c == c
False
>>b == b
True
>>a == a
True
>>a is a
True
>>b is b
True
>>c is c
True
>>d is d
True
>>>
Thanks,

--
Pierre Rouleau

Nov 29 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a


On Nov 29, 12:53 pm, prouleau...@gmail.com wrote:
Hi all,

While trying to use simplejson under Python 2.4.3 I have been
investigating the handling of special floating point values and found
that both Python 2.4 and 2.5 return False when comparing a NaN with
itself. Although surprising, I imagine it could also be correct since
NaN is not a number. But is it correct?
And of course it is correct... As NaN does not compare with itself in
floating point: http://en.wikipedia.org/wiki/NaN

Should have read it earlier...

--
Pierre Rouleau
Nov 29 '06 #2

P: n/a
pr*********@gmail.com wrote:
While trying to use simplejson under Python 2.4.3 I have been
investigating the handling of special floating point values
note that JSON doesn't support non-numeric floating point values, as can
be seen by the "number" syntax description on this page:

http://www.json.org/

(and as I pointed out in another thread on this topic, Python relies on
the C library for serialization of floats, so non-numeric floating point
values aren't portable between Python versions either).

</F>

Nov 29 '06 #3

P: n/a


On Nov 29, 1:11 pm, Fredrik Lundh <fred...@pythonware.comwrote:
prouleau...@gmail.com wrote:
While trying to use simplejson under Python 2.4.3 I have been
investigating the handling of special floating point valuesnote that JSON doesn't support non-numeric floating point values, as can
be seen by the "number" syntax description on this page:

http://www.json.org/

(and as I pointed out in another thread on this topic, Python relies on
the C library for serialization of floats, so non-numeric floating point
values aren't portable between Python versions either).

</F>
That's true, but I ran into a problem with simplejson under Python
2.4.3 on Win32, where it fails to serialize 1.0 properly (and I
reported the problem to its author, and the fact that it works fine
under Python 2.5). There is another thread (Inconsistency producing
constant for float "infinity") that talks about differences between
Python 2.5 and earlier versions regarding treatment of non-numeric
floating point values. So, while investigating the simplejson problem,
I though I had found a problem with the handling of NaN (which
obviously is not the case).

- Pierre R.

Nov 29 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.