[Python-Dev] long(float('nan')) conversion (original) (raw)

Calvin Spealman ironfroggy at gmail.com
Fri Jan 4 15:02:08 CET 2008


On Jan 4, 2008 8:07 AM, Christian Heimes <lists at cheimes.de> wrote:

Hello!

Bug http://bugs.python.org/issue1481296 describes a problem where long(float('nan')) causes a seg fault on Mac OS X. On other platforms it returns 0L, e.g. Python 2.5.1 (r251:54863, Oct 5 2007, 13:36:32) [GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> float('nan') nan >>> long(float('nan')) 0L

I get even more fun results!

Python 2.4.4 (#1, Oct 18 2006, 10:34:39) [GCC 4.0.1 (Apple Computer, Inc. build 5341)] on darwin Type "help", "copyright", "credits" or "license" for more information.

l = long(float('nan')) 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L int(l) 0 long(int(l)) 0L

My patch to Python 2.6 adds an explicit check for NaNs to always return 0L. It did feel a bit strange but it's the default on some platforms. Today an user pointed out that he doesn't like the patch, too.

How should the problem be solved? In my humble opinion long(float('nan')) should return 0L in Python 2.5.2 for b/w compatibility and raise a ValueError or OverflowError in Python 2.6+. Christian


Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/ironfroggy%40gmail.com

-- Read my blog! I depend on your acceptance of my opinion! I am interesting! http://ironfroggy-code.blogspot.com/



More information about the Python-Dev mailing list