[New-bugs-announce] [issue1924] %i string format breaks for large floats (incomplete int conversion)
David Goodger
report at bugs.python.org
Thu Jan 24 17:14:50 CET 2008
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 <report at bugs.python.org>
<http://bugs.python.org/issue1924>
__________________________________
More information about the New-bugs-announce
mailing list