2011-01-03 68 views
63

Trong Python, có cách nào để lấy số nguyên lớn nhất mà một số có thể sử dụng không? Có một số hằng số được xác định trước như INT_MAX không?Các dãy số nguyên Python

Trả lời

114

Python có số nguyên chính xác tùy ý nên không có giá trị cố định tối đa thực sự. Bạn chỉ bị giới hạn bởi bộ nhớ có sẵn.

Trong Python 2, có hai loại, intlong. int s sử dụng loại C, trong khi long s là độ chính xác tùy ý. Bạn có thể sử dụng sys.maxint để tìm tối đa int. Nhưng int s sẽ được tự động thăng long, vì vậy bạn thường không cần phải lo lắng về nó:

sys.maxint + 1 

hoạt động tốt và trả về một long.

sys.maxint thậm chí không tồn tại trong Python 3, vì intlong được hợp nhất thành một độ chính xác tùy ý duy nhất int loại.

+26

Lưu ý rằng trong Python 3 (và Python 2.6 trở lên) 'sys.maxsize' có thể được sử dụng khi bạn cần một giá trị lớn tùy ý. – mattdm

+0

có cái nào không dài không? –

+0

'sys.maxsize' tiếp tục là giới hạn lý thuyết về kích thước của các thùng chứa cho python 2 và 3 (lý thuyết vì bộ nhớ là yếu tố hạn chế thực sự) –

0
import re 
import sys 
import platform 
import struct 

formats = { 
      "int":{"p_type":"integer", "format":"i"}, 
      "float":{"p_type":"float", "format":"f"}, 
      "double":{"p_type":"float", "format":"d"} 
      }  

sys_bit = int(re.findall(r"\d+", platform.architecture()[0])[0])/8 
for k,v in formats.iteritems(): 
    print "max {0} {1}".format(k, 2**struct.Struct(v["format"]).size*sys_bit-1)-1) 
    print "min {0} {1}".format(k, -2**struct.Struct(v["format"]).size*sys_bit-1)) 
Các vấn đề liên quan