Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Giá trị tối đa của integer trong Python?

Python 3: Integer không giới hạn (unlimited precision). Giới hạn thực tế là bộ nhớ khả dụng (available memory).

Python 2 vs Python 3

Đặc điểmPython 2Python 3
Kiểu intCố định (thường 32-bit signed: -2³¹ đến 2³¹-1)Unlimited precision (merged với long)
Kiểu longUnlimited precision (tự động convert)Không còn (gộp vào int)
sys.maxintCó (2³¹-1 = 2147483647)Đã xóa
sys.maxsizeCó (Py_ssize_t max)Có (thường 2⁶³-1 trên 64-bit)

Python 2 Demo

import sys
print(type(sys.maxint))        # 
print(type(sys.maxint + 1))    #  (auto convert)

print(sys.maxint)              # 2147483647
print(-sys.maxint - 1)         # -2147483648

Python 3 Demo

import sys
print(type(sys.maxsize))       # 
print(type(sys.maxsize + 1))   #  (vẫn int!)

print(sys.maxsize)             # 9223372036854775807 (2⁶³-1 trên 64-bit)
# Nhưng có thể gán lớn hơn:
x = 10**1000
print(type(x))                 # 
print(len(str(x)))             # 1001 digits

sys.maxsize là gì?

  • Giá trị tối đa của Py_ssize_t (kích thước container: list, dict, string...).
  • Trên 64-bit: 2**63 - 1 = 9223372036854775807.
  • Trên 32-bit: 2**31 - 1 = 2147483647.
  • Không phải giới hạn giá trị integer.

Float & Integer Info

import sys

# Float info (IEEE 754 double precision)
print(sys.float_info)
# sys.float_info(max=1.79e+308, min=2.22e-308, dig=15, ...)

# Integer info (Python 3)
print(sys.int_info)
# sys.int_info(bits_per_digit=30, sizeof_digit=4)  # 30-bit digits internally

Tóm lại

  • Python 3: int = unlimited precision. Chỉ giới hạn bởi RAM.
  • Python 2: int có giới hạn, tự động chuyển sang long.
  • sys.maxsize dùng cho container size, không phải int max value.
  • Float: IEEE 754 double (~1.8e308 max, ~15-17 digits precision).