[ python-Bugs-1153226 ] string interpolation breaks with %d and
large float
SourceForge.net
noreply at sourceforge.net
Tue Mar 1 07:36:41 CET 2005
Bugs item #1153226, was opened at 2005-02-27 21:10
Message generated for change (Comment added) made by josiahcarlson
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1153226&group_id=5470
Category: Python Interpreter Core
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Stephen Thorne (jerub)
Assigned to: Nobody/Anonymous (nobody)
Summary: string interpolation breaks with %d and large float
Initial Comment:
We have experienced a problem recently when wanting to
render a large float as a string. Converting the float
to an int/long manuall was required.
'%d' % f
throws an exception for all floats f, f >= 2**31
Expected output, shown with 'int()' and 'long()':
>>> '%d %d' % (long(float(2**31)), int(float(2**31)))
'2147483648 2147483648'
Non-Working Example.
>>> '%d' % float(2**31)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: int argument required
Tested on:
Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
Python 2.4.1a0 (#2, Feb 9 2005, 22:42:24)
----------------------------------------------------------------------
Comment By: Josiah Carlson (josiahcarlson)
Date: 2005-02-28 22:36
Message:
Logged In: YES
user_id=341410
Note that it will also raise a TypeError when the float f, f
< -2**31
Is this a bug? I don't know. I tend to not pass floats
when string interpolation is expecting integers. Maybe the
documentation should be cleared up.
If you really want a truncated float, perhaps "%.0f" is the
format you are looking for, to save you the effort of using
int() or long().
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1153226&group_id=5470
More information about the Python-bugs-list
mailing list