On Thu, 1 Jul 2010 06:26:21 pm Richard D. Moores wrote: > >>> 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?
This is not an issue with print, this is an issue with floats -- they produced a rounded, approximate value when converted to a string. print merely prints that string: >>> x = 1e15 +17 >>> x 1000000000000017.0 >>> print(x) 1e+15 >>> str(x) '1e+15' If you want more control over the string conversion, you can do something like this: >>> print(repr(x)) 1000000000000017.0 >>> print('%.5f' % x) 1000000000000017.00000 -- Steven D'Aprano _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor