[Tutor] puzzled by Python 3's print()
Steven D'Aprano
steve at pearwood.info
Thu Jul 1 13:57:15 CEST 2010
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
More information about the Tutor
mailing list