30

I know in most, if not all programming languages, integers, floats etc all have a maximum amount they can hold, either unsigned or signed. Eg pascal's int type can only hold up to 32768 ~.

What i wanted to know was, what is the limit on python's int and floating point variables. I tried a little program to produce extremely large numbers, but i ran into no errors. Does it even have limits on how big these variables can be ?

I looked in the documentation and couldn't find what i was looking for :/

Help would be greatly appreciated, thanks !

2
  • You couldn't find the IEEE floating-point information? docs.python.org/tutorial/floatingpoint.html It seems pretty clear. Commented Mar 29, 2011 at 9:58
  • Python uses 64 bit floats (Double precision IEEE754) and unlimited (well, as much as your computer can handle) integer lengths. Commented Jun 9, 2019 at 13:38

4 Answers 4

66

Earlier Versions had a limit on int but its removed now, so you can say there is no limit, it depends on the memory of your computer. Check this article.

Sign up to request clarification or add additional context in comments.

2 Comments

A tl;dr version: Small Python integer numbers fit into machine word of the platform (e.g. 32 bit). If a number doesn't fit, it is automatically promoted to a 'long' integer which is as long as your RAM allows. You can't really have an integer overflow. If you want to pack precise number of bits (e.g. to interface to C code), you import struct, ctypes.
While it's fascinating to know that it's only limited by the memory, it'd also be nice to know how Python implements the storage and arithmetic operations of large numbers, internally. I remember a blog that mentioned that numbers are stored with a base of 2^30, but that'd mean there is a limit. In your answer, could you also link to any explanation that provides some insight on the internal implementation? This would be an amazing piece of information for any Pythonista!
10

There used to be a limit in earlier versions of Python for int. But, this is dropped as Python treats integers as objects. So, although Python allocates 32 bits for the value object reference is pointing to, as the value goes beyond 2^32 it can keep moving up all the way up to the size of RAM on your computer.

Comments

7

See the sys module:

import sys dir(sys) print sys.maxint help(sys.float_info) 

and so on.

1 Comment

sys.maxsize for python3
-1

This document gives good starting point, like sys.float_info.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.