ทุ่นสูงสุดใน Python คืออะไร?


172

sys.maxintผมคิดว่าจำนวนเต็มสูงสุดในหลามสามารถใช้ได้โดยการโทร

อะไรคือค่าสูงสุดfloatหรือเป็นlongไพ ธ อน


ไม่มีsys.maxintใน Python 3
David McCorrie

คำตอบ:


273

สำหรับfloatมีลักษณะที่sys.float_info:

>>> import sys
>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2
250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsil
on=2.2204460492503131e-16, radix=2, rounds=1)

โดยเฉพาะsys.float_info.max:

>>> sys.float_info.max
1.7976931348623157e+308

หากยังไม่ใหญ่พอจะมีค่าบวกอยู่เสมอ:

>>> infinity = float("inf")
>>> infinity
inf
>>> infinity / 10000
inf

longชนิดนั้นมีความแม่นยำไม่ จำกัดดังนั้นฉันคิดว่าคุณกำลัง จำกัด ด้วยหน่วยความจำ


1
จริง ๆ แล้วฉันพบว่า sys.maxint นั้นเพียงพอต่อการสมัครของฉัน
ladyfafa

ดูเหมือนว่าsys.float_infoมีให้เริ่มต้นจาก v2.6 แล้ว v2.3-5 ล่ะ
Aleksei Fedotov

1
หมายเหตุ sys.float_info.min ถูกกำหนดเป็น "จำนวนลอยตัวที่มีค่าเป็นบวกขั้นต่ำ" ค่า denormal ที่น้อยกว่านั้นเป็นไปได้จนถึง5e-324
Bob Stein

1
เจ๋งทั้งคู่มีประโยชน์มาก infสำหรับทุกสิ่งที่ไพ ธ อนและfloat_info.maxเป็นวิธีแก้ปัญหาเมื่อก่อนหน้านี้ไม่ทำงานตัวอย่างเช่นtime.sleep(float("inf"))ไม่ได้รับอนุญาต :(
Dima Tisnek

2
@ladyfafa: sys.maxint หายไปใน Python 3 โปรดดูความคิดเห็นในคำตอบอื่น ๆ และstackoverflow.com/questions/13795758/…
Joachim Wagner

16

sys.maxint ไม่ใช่จำนวนเต็มที่ใหญ่ที่สุดที่สนับสนุนโดย python มันเป็นจำนวนเต็มที่ใหญ่ที่สุดที่รองรับโดยชนิดจำนวนเต็มปกติของไพ ธ อน


10
+1 สิ่งนี้สำคัญ ใน Py3k ก็เกือบไม่มีความหมาย - เป็นจุดที่งูหลาม (โปร่งใส!) longการเปลี่ยนแปลงประเภทข้อมูลพื้นฐานกับ
Katriel

6
@katrielalex: sys.maxintไม่ได้กำหนดไว้ใน Python 3 มันถูกเรียกใช้sys.maxsizeซึ่งอาจเป็นที่ต้องการใน Python 2 เช่นกัน
Scott Griffiths

14
@Scott Griffiths: ไม่มาก sys.maxsize(แนะนำใน Python 2.6) และsys.maxintเป็นสองสิ่งที่แตกต่างกัน ครั้งแรกให้จำนวนสูงสุดของวัตถุที่ได้รับอนุญาตในการเก็บรวบรวม (เช่นขนาดสูงสุดของรายการ Dict ฯลฯ ) และสอดคล้องกับรุ่น C size_tประเภทที่ลงนาม; สองคือจุดหลังจากที่intประเภทสวิทช์longและเป็นค่าสูงสุดของ longC บนแพลตฟอร์มบางสองค่าที่แตกต่างกันเช่นใน Windows 64-bit, sys.maxsizeเป็น2**63-1และเป็นsys.maxint 2**31-1
Mark Dickinson

@ Mark Dickinson: ขอบคุณสำหรับการแก้ไข - ฉันไม่ได้ตระหนักว่าพวกเขาอาจจะแตกต่างกัน (ด้วย Python 64 บิตบน Snow Leopard พวกเขาทั้งคู่2**63-1)
Scott Griffiths


7

หากคุณใช้งานnumpyคุณสามารถใช้dtype ' float128 ' และรับ float สูงสุด10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.