Какое максимальное число с плавающей точкой в ​​Python?

172

Я думаю, что максимальное число в Python доступно при вызове sys.maxint.

Какой максимум floatили longв питоне?

ladyfafa
источник
В sys.maxintPython 3 нет.
Дэвид Маккорри

Ответы:

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.

GWW
источник
10
+1 Это важно. В Py3k это почти бессмысленно - это точка, в которой Python (прозрачно!) Меняет базовый тип данных на long.
Катриэль
6
@katrielalex: sys.maxintдаже не определен в Python 3, он называется sys.maxsize, что, вероятно, также предпочтительнее в Python 2.
Скотт Гриффитс
14
@ Скотт Гриффитс: Не совсем. 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.
Марк Дикинсон
@Mark Dickinson: Спасибо за исправление - я не осознавал, что они могут отличаться (с 64-битным Python на Snow Leopard они оба 2**63-1).
Скотт Гриффитс
7

Если вы используете numpy , вы можете использовать dtype ' float128 ' и получить максимальное число с плавающей точкой 10e + 4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)
Аэльфинн
источник