>>>> x = 2000000000000034 >>>> x/2 > 1000000000000017.0 >>>> print(x/2) > 1e+15 > > I was expecting, in fact needing, 1000000000000000017 or 1000000000000000017.0 > > 1e+15 is unsatisfactory. Am I forced to use the decimal module?
Can't you use string formatting? Eg: >>> print("{0:15.0f}".format(x/2)) 1000000000000017 print uses __str__()/str(), which I assume was deemed unsatisfactory in Python 2: it's supposed to show a 'simple, nice' representation of anything, while __repr__() (or the repr() function) shows a more exact representation (or rather, repr() shows an object that can be used to recreate a new identical object: float(repr(x/2)) gives back the correct float, while float(str(x/2)) wouldn't). So they've apparently changed __str__() to make things somewhat more readable. __repr__()/repr() is what you get with just using x/2 on the command line: >>> x/2 1000000000000017.0 >>> repr(x/2) 1000000000000017.0 And you could actually use: >>> print(repr(x/2)) 1000000000000017.0 I would go for the format statement, though. But that may depend on your precise needs. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor