'Python large numbers (float and integer)

I am trying to understand the following calculation results. Out[1], Out[2] and Out[3] seem to be related to the limit on precision of floats, and Out[4] may be due to the fact that there is no limit on digits of int. Correct? I wonder if someone can explain them in more detail.

In [1]: 2.0**52 == 2.0**52 + 1.0
Out[1]: False

In [2]: 2.0**53 == 2.0**53 + 1.0
Out[2]: True

In [3]: 2**53 == 2**53 + 1.0
Out[3]: True

In [4]: 2**53 == 2**53 + 1
Out[4]: False


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source