【问题标题】:Python Number LimitPython 数量限制
【发布时间】:2011-07-25 03:35:42
【问题描述】:

我知道,如果不是所有的编程语言,整数,浮点数等都具有它们可以容纳的最大数量,无论是无符号的还是有符号的。比如pascal的int类型最多只能容纳32768~。

我想知道的是,python 的 int 和浮点变量的限制是什么。我尝试了一个小程序来产生非常大的数字,但我没有遇到任何错误。它甚至对这些变量的大小有限制吗?

我查看了文档,但找不到我要查找的内容:/

非常感谢您的帮助,谢谢!

【问题讨论】:

  • 找不到 IEEE 浮点信息? docs.python.org/tutorial/floatingpoint.html 好像很清楚。
  • Python 使用 64 位浮点数(双精度 IEEE754)和无限(嗯,只要您的计算机可以处理)整数长度。

标签: python numbers limit bit


【解决方案1】:

早期版本对int 有限制,但现在已删除,因此您可以说没有限制,这取决于您计算机的内存。检查this article。

【讨论】:

  • 一个 tl;dr 版本:小的 Python 整数适合平台的机器字(例如 32 位)。如果一个数字不合适,它会自动提升为一个“长”整数,只要您的 RAM 允许。你不能真的有整数溢出。如果你想打包精确的位数(例如与 C 代码接口),你 import struct, ctypes.
  • 虽然知道它仅受内存限制很有趣,但了解 Python 如何在内部实现大数的存储和算术运算也很有趣。我记得有一篇博客提到数字以2^30 为基数存储,但这意味着存在限制。在您的回答中,您是否还可以链接到任何解释,以提供有关内部实施的一些见解?对于任何 Pythonista 来说,这将是一个惊人的信息!
【解决方案2】:

在早期版本的 Python 中,int 曾经有一个限制。但是,由于 Python 将整数视为对象,因此将其删除。因此,尽管 Python 为值对象引用所指向的值分配了 32 位,但当值超过 2^32 时,它可以一直向上移动到您计算机上 RAM 的大小。

【讨论】:

    【解决方案3】:

    查看 sys 模块:

    import sys
    dir(sys)
    print sys.maxint
    help(sys.float_info)
    

    等等。

    【讨论】:

    • python3 的 sys.maxsize
    【解决方案4】:

    这个document 提供了很好的起点,例如sys.float_info。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多