这是一个非常有趣的问题,可能有与 python、计算和/或硬件相关的原因。虽然不想给出一个完整的答案,但这是我要去做的……
首先请注意,类型是由语言定义的,并且可能与您的硬件架构不同。例如,您甚至可以使用 8 位处理器进行双打。当然,任何算术都涉及多个 CPU 指令,从而使计算速度慢得多。尽管如此,如果您的应用程序需要它,它可能是值得的,甚至是需要的(迟到总比错误好,特别是如果您正在运行模拟以实现桥稳定性......)那么需要 128 位精度吗?这是关于它的维基百科文章......
一个更有趣的细节是,当我们说一台计算机是 64 位时,这并没有完全描述硬件。有很多部分可以是(至少有时是)不同的位:CPU 中的计算寄存器、内存寻址方案/内存寄存器和不同的总线,其中最重要的是从 CPU 到内存的总线。
- ALU(算术和逻辑单元)具有进行计算的寄存器。您的机器是 64 位的(不确定这是否也意味着它们可以同时进行 2 次 32 位计算)这显然是与本次讨论最相关的数量。很久以前,你可以出去买一个协处理器来加速计算更高精度的速度……
- 保存内存地址的寄存器限制了计算机可以(直接)看到的内存,这就是为什么具有 32 位内存寄存器的计算机只能看到 2^32 字节(或大约 4 GB)请注意,对于 16 位,这变成了 65K,这是非常低的。操作系统可以找到绕过此限制的方法,但不能针对单个程序,因此 32 位计算机中的任何程序通常都不能拥有超过 4GB 的内存。
- 请注意,这些限制是关于字节,而不是位。那是因为当从内存中引用和加载时,我们会加载字节。事实上,这样做的方式是,加载一个字节(8 位)或 8 个(64 位 == 计算机的总线长度)需要相同的时间。我要求一个地址,然后立即通过总线获取所有位。可能在一个架构中,所有这些数量都不是相同的位数。