[ python-Bugs-1534769 ] Identical floats print inconsistently

SourceForge.net noreply at sourceforge.net
Fri Aug 4 22:14:06 CEST 2006


Bugs item #1534769, was opened at 2006-08-04 20:07
Message generated for change (Comment added) made by gbrandl
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1534769&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
>Group: Not a Bug
>Status: Closed
>Resolution: Invalid
Priority: 5
Submitted By: Marc W. Abel (gihon)
Assigned to: Nobody/Anonymous (nobody)
Summary: Identical floats print inconsistently

Initial Comment:
Hi, and thank you.

Many bugs relating to this have been submitted by
others over a period of years, and these have generally
been closed with "not a bug" responses.  I'll do my
best to explain the problem clearly enough.

The following session prints a single variable three
ways, with two different results:

-----------

[me at localhost current]$ python
Python 2.4.1 (#1, May 16 2005, 15:19:29)
[GCC 4.0.0 20050512 (Red Hat 4.0.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for
more information.
>>> a = round(1./7, 3)
>>> print a
0.143
>>> print (a,)
(0.14299999999999999,)
>>> print (a,)[0]
0.143
>>>

-----------

I'm fully informed about IEEE floating point
representations in binary, but the limitations of data
type are not causing the difference in output.  The
interpreter is using different rules to print this
float, depending on whether it's a straight float or
part of some other structure (in this example, a tuple).

Once the interpreter recurses to a depth where it's
clearly going to print a float, whatever rule is
selected needs to be consistently applied.  This means
calling the same string formatting code with the same
inputs.

Marc


----------------------------------------------------------------------

>Comment By: Georg Brandl (gbrandl)
Date: 2006-08-04 20:14

Message:
Logged In: YES 
user_id=849994

Sorry, but this is another "not a bug".

"print tuple" invokes tuple.__repr__() (because there is no
separate __str__) which invokes repr(item) on each tuple
item, while "print item" invokes str(item). For floats, this
distinction results in a different rounding precision.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1534769&group_id=5470


More information about the Python-bugs-list mailing list