The smallest and largest values of numeric types

Steven D'Aprano steve at
Wed Apr 18 10:09:34 CEST 2007

On Wed, 18 Apr 2007 07:15:11 +0200, Hendrik van Rooyen wrote:

> I once made a thing that tried to find the limit of longs and stopped
> when I had two or three screenfulls of numbers.

You should find that converting longs to strings (say, for printing them)
is *very* slow. E.g. the following code

big = 10L**100 # one google, a big number
while True:
    print big # so we can see the last value before it fails
    big *= 10

will run terribly slow and should be written as:

big = 10L**100 # one google, a big number
    while True:
        big *= 10
except: # don't know what exception will be raised, so catch ANYTHING
    print len(str(big))-1 # the number of digits

only does the slow conversion to string once, instead of every time around
the loop. However, once your machine starts paging, it will still slow
down a lot.

> I came to the conclusion that for "integer" arithmetic like this, the
> limit is either your memory size, or some other number that is so big
> that in practice you don't have to worry about it..

Yes, longs are limited only by the amount of memory accessible. 

Steven D'Aprano 

More information about the Python-list mailing list