Độ nổi tối đa trong Python là gì?


172

Tôi nghĩ rằng số nguyên tối đa trong python có sẵn bằng cách gọi sys.maxint.

Tối đa floathoặc longtrong Python là gì?


Không có sys.maxinttrong Python 3.
David McCorrie

Câu trả lời:


273

Để floatcó một cái nhìn tại 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)

Cụ thể , sys.float_info.max:

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

Nếu nó không đủ lớn, sẽ luôn có vô cực tích cực :

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

Các longloại có độ chính xác không giới hạn , vì vậy tôi nghĩ rằng bạn chỉ bị giới hạn bởi bộ nhớ có sẵn.


1
thực sự, tôi thấy sys.maxint là khá đủ cho ứng dụng của tôi
ladyfafa

Có vẻ như sys.float_infocó sẵn bắt đầu từ v2.6. Làm thế nào về v2.3-5?
Aleksei Fedotov

1
Lưu ý sys.float_info.min được định nghĩa là " float chuẩn hóa tích cực tối thiểu ". Các giá trị bất thường nhỏ hơn là có thể, xuống tới5e-324
Bob Stein

1
Thật tuyệt, cả hai đều rất hữu ích. infđối với tất cả mọi thứ python và float_info.maxnhư một cách giải quyết khi trước đó không hoạt động, ví dụ time.sleep(float("inf"))không được phép :(
Dima Tisnek

2
@ladyfafa: sys.maxint đã biến mất trong Python 3, xem thêm các bình luận trong câu trả lời khác và stackoverflow.com/questions/13795758/ Lỗi
Joachim Wagner

16

sys.maxint không phải là số nguyên lớn nhất được python hỗ trợ. Đây là số nguyên lớn nhất được hỗ trợ bởi loại số nguyên thông thường của python.


10
+1 Điều này rất quan trọng. Trong Py3k, nó gần như vô nghĩa - đó là điểm mà Python (trong suốt!) Thay đổi kiểu dữ liệu cơ bản thành long.
Katriel

6
@katrielalex: sys.maxintthậm chí không được định nghĩa trong Python 3, nó được gọi là sys.maxsize, có lẽ cũng được ưu tiên trong Python 2.
Scott Griffiths

14
@Scott Griffiths: Không hoàn toàn. sys.maxsize(được giới thiệu trong Python 2.6) và sys.maxintlà hai thứ khác nhau. Cái đầu tiên đưa ra số lượng đối tượng tối đa được phép trong một bộ sưu tập (ví dụ: kích thước tối đa của danh sách, dict, v.v.) và tương ứng với một phiên bản đã ký của size_tloại C ; thứ hai là các điểm sau đó intloại chuyển sang long, và là giá trị tối đa của một C long. Trên một số nền tảng, hai giá trị là khác nhau: ví dụ: trên Windows 64 bit, sys.maxsizeđang 2**63-1sys.maxint2**31-1.
Đánh dấu Dickinson

@Mark Dickinson: Cảm ơn vì đã sửa lỗi - Tôi đã không nhận ra chúng có thể khác nhau (với Python 64 bit trên Snow Leopard, cả hai đều như vậy 2**63-1).
Scott Griffiths


7

Nếu bạn đang sử dụng numpy , bạn có thể sử dụng dtype ' float128 ' và nhận được số float tối đa là 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.