Який максимальний плавець у Python?


Відповіді:


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?
Олексій Федотов

1
Примітка sys.float_info.min визначається як "мінімальний позитивний нормалізований поплавок". Можливі менші денормальні значення , аж до5e-324
Боб Штейн

1
Класно, обидва дуже корисні. infдля всіх речей python, і float_info.maxяк вирішення, коли раніше не працює, наприклад time.sleep(float("inf")), заборонено :(
Діма Тиснек

2
@ladyfafa: sys.maxint пішов на Python 3, дивіться також коментарі до іншої відповіді та stackoverflow.com/questions/13795758/…
Йоахім Вагнер

16

sys.maxint - не найбільше ціле число, підтримуване python. Це найбільше ціле число, підтримуване регулярним цілим числом python.


10
+1 Це важливо. У Py3k це майже безглуздо - це момент, коли Python (прозоро!) Змінює базовий тип даних на long.
Катріель

6
@katrielalex: sys.maxintнавіть не визначено в Python 3, його називають sys.maxsize, що, мабуть, буде кращим і в Python 2.
Скотт Гріффітс

14
@Scott Griffiths: Не зовсім. sys.maxsize(представлена ​​в Python 2.6) і sys.maxintце дві різні речі. Перший дає максимальну кількість об'єктів, дозволених у колекції (наприклад, максимальний розмір списку, dict тощо) та відповідає підписаній версії типу C size_t; друга точка , після чого intтип перемикається long, і максимальне значення C long. На деяких платформах два значення різні: наприклад, у 64-розрядної Windows sys.maxsizeє 2**63-1і sys.maxintє 2**31-1.
Марк Дікінсон

@ Марк Дікінсон: Дякую за виправлення - я не розумів, що вони коли-небудь можуть бути різними (із 64-бітним Python на Snow Leopard вони обоє 2**63-1).
Скотт Гріффітс


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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.