7

规格: Python 3.3.1

我想做的是: “使用 Python,确定您的系统可以处理的最大和最小整数、长整数、浮点数和复数。”

我做了什么:我浏览了 Python 的数学模块和所有与数学和数字相关的内置函数,但找不到这样做的方法。我也尝试过类似的方法max(range(0,)),但它返回了ValueError: max() arg is an empty sequence错误。

问题:如何确定我的系统可以使用 Python 处理的最大/最小 int/long/float/复数?作为一个完全的初学者,我知道我一定错过了一些东西,但我尝试过但无法弄清楚。我感谢您的帮助!

4

2 回答 2

13

sys模块上提供了 python 数字限制,例如有任何限制:

  • sys.float_info是一个命名元组,对您的平台有浮点限制。浮点数由指数和精度组成;您必须更准确地了解此处最大数字的含义;具有最大指数和使用全精度的数是sys.float_info.max.

  • sys.int_info; 与其说是实施细节的限制,不如说是实施细节;您应该能够从中估计出可能的最大整数。Python 整数仅受可用内存的限制。

  • sys.maxsize; 平台字长和对列表和元组等的限制。

所以对于整数,基本上对最大值和最小值有一个软限制。这取决于您的进程可以使用多少内存,以及您的进程已经为其他事情使用了多少内存。

在 Python 3 中,不再有单独的long类型,但在 Python 2 中,sys.maxsize + 1必须是 a long,就像-sys.maxsize - 2. 在这两个极端之间是可能的“短”整数范围。

对于复数,排序要多一点……无论如何都复杂。复数具有实部和虚部,两者都是浮点数。你猜怎么着?这些是 python 浮点数,您已经在上面获得了它们的限制信息:

>>> type(1j)
<type 'complex'>
>>> type(1j.real)
<type 'float'>
>>> type(1j.imag)
<type 'float'>
于 2013-06-08T14:59:35.743 回答
4

sys.float_info为浮点值提供所需的信息。

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

Python 3 对整数没有上限或下限,并且不存在对任意复数进行排序的数学定义(尽管两个复数的实部或虚部可以单独排序)。

于 2013-06-08T14:57:56.160 回答