New submission from David Goodger: I ran across this bug in some legacy production code when numbers got high:
>>> '%i' % 2e9 '2000000000' >>> '%i' % 3e9 Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: int argument required It looks like the float is being automatically converted to an int, but floats > sys.maxint cause an error. However, >>> int(3e9) 3000000000L So the implicit float-to-int conversion is imperfect; large floats are not being converted to long ints. Same error in Python 2.3 through 2.6a0 (as of 2007-12-28). In Python 2.1.3 & 2.2.3 the error is "OverflowError: float too large to convert". The same error is triggered by int(3e9) though. While it's arguably not-quite-sane to have code that triggers this error, the inconsistency is what concerns me. ---------- components: Interpreter Core messages: 61635 nosy: goodger severity: normal status: open title: %i string format breaks for large floats (incomplete int conversion) type: behavior versions: Python 2.3, Python 2.4, Python 2.5, Python 2.6 __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue1924> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com