Python中最大的浮点数是多少?

234

我认为在Python中可以通过调用sys.maxint获取最大的整数。

Python中的最大的floatlong是多少?


另请参阅:整数的最大值和最小值


Python 3 中没有 sys.maxint - James McCorrie
4个回答

350
对于 `float`,可以参考 sys.float_info
>>> import sys
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, 
min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, 
epsilon=2.220446049250313e-16, radix=2, rounds=1)

具体来说,sys.float_info.max

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

如果这还不够大,总还有正无穷

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

int的精度是无限的,所以它只受可用内存的限制。


2
实际上,我发现sys.maxint对我的应用程序已经足够了。 - ladyfafa
似乎 sys.float_info 是从 v2.6 开始提供的。那么 v2.3-5 呢? - Aleksei Fedotov
1
注意,sys.float_info.min被定义为“最小正规浮点数”。更小的非规范化值是可能的,最小可达到 5e-324 - Bob Stein
1
很棒,它们都非常有用。inf 适用于所有 Python 相关事物,而 float_info.max 则可作为一种解决方法,例如 time.sleep(float("inf")) 是不被允许的 :( - Dima Tisnek
2
@ladyfafa:在Python 3中,sys.maxint已经消失了,请参见其他答案中的评论和https://dev59.com/MmYr5IYBdhLWcg3wR4Ys。 - Joachim Wagner

18

sys.maxsize(以前是sys.maxint)并不是Python支持的最大整数。它是Python常规整数类型所支持的最大整数。


11
这很重要。在Python 3中,这几乎是没有意义的——这个点是Python(透明地!)将底层数据类型更改为“long”的时候。 - Katriel
7
sys.maxint在Python 3中已经不存在了,现在被称为sys.maxsize。在Python 2中,也应该使用sys.maxsize作为首选。 - Scott Griffiths
19
@Scott Griffiths: 不完全正确。sys.maxsize(在Python 2.6中引入)和 sys.maxint 是两个不同的概念。前者给出了一个集合中允许存在的最大对象数量(例如列表、字典等的最大大小),对应于C语言的带符号 size_t 类型;后者是 int 类型转换为 long 类型的临界点,是C语言的 long 类型的最大值。在某些平台上,这两个值是不同的:例如,在64位Windows上,sys.maxsize2**63-1,而 sys.maxint2**31-1 - Mark Dickinson
@Mark Dickinson:感谢纠正——我没有意识到它们可能不同(在 Snow Leopard 上使用 64 位 Python,它们都是 2 ** 63-1)。 - Scott Griffiths
https://dev59.com/MmYr5IYBdhLWcg3wR4Ys - JDOaktown

10

如果您正在使用numpy,可以使用dtype'float128',并获得最大浮点数10e+4931

>>> np.finfo(np.float128)
finfo(resolution=1e-18, min=-1.18973149536e+4932, max=1.18973149536e+4932, dtype=float128)

3

在Python 3中,没有 sys.maxint ,而是有一个 sys.maxsize

>>> sys.maxsize
2147483647

这并不意味着最大的int值被限制在20亿以内! 它意味着包含整数的对象的大小有一个最大值,为20亿字节。即一个非常非常大的数字。

对于float,请查看sys.float_info

>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)

具体来说,sys.float_info.max 是指浮点数的最大值。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接