ฉันสามารถกำหนดค่าสูงสุดสำหรับจำนวนเต็มยาวเพื่อตัวแปรที่คล้ายกันเช่นไปที่ C ++ LONG_MAX's
minถ้าคุณต้องการใช้ฟังก์ชันนี้ใน Python!)
float("inf")การใช้งานอินฟินิตี้ หรือดีกว่าให้ใช้minฟังก์ชันในตัว
ฉันสามารถกำหนดค่าสูงสุดสำหรับจำนวนเต็มยาวเพื่อตัวแปรที่คล้ายกันเช่นไปที่ C ++ LONG_MAX's
minถ้าคุณต้องการใช้ฟังก์ชันนี้ใน Python!)
float("inf")การใช้งานอินฟินิตี้ หรือดีกว่าให้ใช้minฟังก์ชันในตัว
คำตอบ:
ไม่มีขีด จำกัด ที่กำหนดไว้อย่างชัดเจน จำนวนพื้นที่ที่อยู่ที่มีอยู่จะเป็นข้อ จำกัด ในทางปฏิบัติ
(นำมาจากเว็บไซต์นี้ ) ดูเอกสารเกี่ยวกับชนิดของตัวเลขLong integers have unlimited precisionที่คุณจะเห็นว่า ใน Python 2 จำนวนเต็มจะเปลี่ยนเป็น longs โดยอัตโนมัติเมื่อเติบโตเกินขีด จำกัด :
>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>
สำหรับจำนวนเต็มเรามี
ค่าสูงสุดของ int สามารถพบได้ใน Python 2.x ด้วยsys.maxint. มันถูกลบออกใน Python 3 แต่sys.maxsizeมักจะใช้แทนได้ จากบันทึกการเปลี่ยนแปลง :
ค่าคงที่ sys.maxint ถูกลบออกเนื่องจากไม่มีการ จำกัด ค่าของจำนวนเต็มอีกต่อไป อย่างไรก็ตาม sys.maxsize สามารถใช้เป็นจำนวนเต็มมากกว่ารายการหรือดัชนีสตริงที่ใช้ได้จริง เป็นไปตามขนาดจำนวนเต็ม "ธรรมชาติ" ของการนำไปใช้งานและโดยทั่วไปจะเหมือนกับ sys.maxint ในรุ่นก่อนหน้าบนแพลตฟอร์มเดียวกัน (สมมติว่าเป็นตัวเลือกการสร้างเดียวกัน)
และสำหรับทุกคนที่สนใจในความแตกต่าง (Python 2.x):
sys.maxintจำนวนเต็มบวกที่ใหญ่ที่สุดที่รองรับโดยประเภทจำนวนเต็มปกติของ Python นี่คืออย่างน้อย 2 ** 31-1 จำนวนเต็มลบที่ใหญ่ที่สุดคือ -maxint-1 - ความไม่สมมาตรเป็นผลมาจากการใช้เลขคณิตไบนารีเสริมของ 2
sys.maxsizeจำนวนเต็มบวกที่ใหญ่ที่สุดที่รองรับโดยประเภท Py_ssize_t ของแพลตฟอร์มดังนั้นรายการขนาดสูงสุดสตริงคำสั่งและคอนเทนเนอร์อื่น ๆ สามารถมีได้
และเพื่อความสมบูรณ์นี่คือเวอร์ชัน Python 3 :
sys.maxsize จำนวนเต็มที่ให้ค่าสูงสุดที่ตัวแปรประเภท Py_ssize_t สามารถรับได้ โดยปกติจะเป็น 2 ^ 31 - 1 บนแพลตฟอร์ม 32 บิตและ 2 ^ 63 - 1 บนแพลตฟอร์ม 64 บิต
มีและfloat("inf") float("-inf")สิ่งเหล่านี้สามารถเปรียบเทียบกับประเภทตัวเลขอื่น ๆ :
>>> import sys
>>> float("inf") > sys.maxsize
True
Python longสามารถมีขนาดใหญ่ได้ตามอำเภอใจ หากคุณต้องการค่าที่มากกว่าค่าอื่น ๆ คุณสามารถใช้ได้float('inf')เนื่องจาก Python ไม่มีปัญหาในการเปรียบเทียบค่าตัวเลขประเภทต่างๆ ในทำนองเดียวกันสำหรับค่าที่น้อยกว่าค่าอื่น ๆ คุณสามารถfloat('-inf')ใช้ได้
จำนวนเต็มมีขนาดไม่ จำกัด และไม่มีค่าสูงสุดใน Python
ตามความคิดเห็นของคุณเกี่ยวกับสิ่งที่คุณกำลังพยายามทำขณะนี้คุณกำลังคิดอะไรบางอย่างตามแนวของ
minval = MAXINT;
for (i = 1; i < num_elems; i++)
if a[i] < a[i-1]
minval = a[i];
นั่นไม่ใช่วิธีคิดใน Python การแปล Python ที่ดีกว่า (แต่ยังไม่ดีที่สุด) จะเป็น
minval = a[0] # Just use the first value
for i in range(1, len(a)):
minval = min(a[i], a[i - 1])
โปรดทราบว่าข้างต้นไม่ได้ใช้ MAXINT เลย ส่วนหนึ่งของโซลูชันนี้ใช้กับภาษาโปรแกรมใด ๆ : คุณไม่จำเป็นต้องทราบค่าสูงสุดที่เป็นไปได้เพียงเพื่อค้นหาค่าที่น้อยที่สุดในคอลเล็กชัน
แต่อย่างไรก็ตามสิ่งที่คุณจริงๆทำในหลามเป็นเพียง
minval = min(a)
นั่นคือคุณไม่ได้เขียนวนซ้ำเลย min()ฟังก์ชันในตัวจะได้รับค่าต่ำสุดของคอลเลคชันทั้งหมด
longพิมพ์ใน Python 2.x ใช้เลขคณิตที่มีความแม่นยำโดยพลการและไม่มีค่าที่เป็นไปได้สูงสุด ถูก จำกัด ด้วยหน่วยความจำที่มีอยู่ Python 3.x ไม่มีประเภทพิเศษสำหรับค่าที่ไม่สามารถแสดงด้วยจำนวนเต็มเครื่องดั้งเดิม - ทุกอย่างเป็นอยู่intและการแปลงจะได้รับการจัดการเบื้องหลัง
ซึ่งแตกต่างจาก C / C ++ Long ใน Python มีความแม่นยำไม่ จำกัด อ้างถึงส่วนประเภทตัวเลข ใน python สำหรับข้อมูลเพิ่มเติมในการกำหนดค่าสูงสุดของจำนวนเต็มคุณสามารถอ้างอิงsys.maxintได้ คุณจะได้รับรายละเอียดเพิ่มเติมจากเอกสารของSYS
คุณสามารถใช้: ค่าสูงสุดของลูกลอยคือ
float('inf')
สำหรับเชิงลบ
float('-inf')
ใน python3 คุณสามารถส่งค่า float ไปยังฟังก์ชัน int เพื่อรับหมายเลขนั้น 1.7976931348623157e + 308 ในการแทนค่าจำนวนเต็ม
import sys
int(sys.float_info.max)