Skip Montanaro <skip.montan...@gmail.com> writes: > >>> print repr(27.04 - 0.01) > 27.029999999999998 > >>> print str(27.04 - 0.01) > 27.03 > > My test case writes through a csv writer, which writes the str() of each > element to the output.
For Python 2, that's a mistake: str(object='') Return a string containing a nicely printable representation of an object. […] The difference with repr(object) is that str(object) does not always attempt to return a string that is acceptable to eval(); its goal is to return a printable string. […] <URL:https://docs.python.org/2/library/functions.html#str> So, for preserving the value, you don't want ‘str(obj)’. That's what ‘repr(obj)’ is for: repr(object) Return a string containing a printable representation of an object. […] For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval() […] <URL:https://docs.python.org/2/library/functions.html#repr> > Is there documentation of this particular change? My searching turned > up documentation of plenty of other changes, but not this particular > one. Only that one should not rely on ‘str’ preserving the value accurately, as documented in Python 2. -- \ “[Entrenched media corporations will] maintain the status quo, | `\ or die trying. Either is better than actually WORKING for a | _o__) living.” —ringsnake.livejournal.com, 2007-11-12 | Ben Finney -- https://mail.python.org/mailman/listinfo/python-list