数字类型实战——整数精确度
在 Python 不同版本之间,除法可能稍有不同,但它仍相当标准。下面是一点更不寻常的内容。如前提到的:Python 3 系列的整数支持不受限的尺寸:
>>> 999999999999999999999999999999 + 1 # 3.X
1000000000000000000000000000000
Python 2 系列对长整数有一个单独的类型,但它会自动将任何太大的无法在普通整数中保存的数字转换为这个类型。因此,不需要编写任何特殊语法来使用长整数,而且唯一可以得知自己在使用 2 系列长整数的方法就是打印结果带有一个尾随的”L“:
>>> 999999999999999999999999999999 + 1 # 2.X
1000000000000000000000000000000L
精度不受限的整数是一个方便的内置工具。比如,可以用它们来在 Python 中直接以美分对美国国债进行计数(如果你真的那么想,而且在电脑上有足够内存来保存今年的预算)。它们还是在第 3 章例子中,可以对 2 取那么大幂的原因。下面是系列 3 和系列 2 的例子:
>>> 2 ** 200
1606938044258990275541962092341162602522202993782792835301376
>>> 2 ** 200
1606938044258990275541962092341162602522202993782792835301376L
因为 Python 为了支持扩展的精度,必须完成额外的工作,当数字变大时,整数数学通常比普通数字要慢很多。然而,如果你需要这个精度,它是待使用的内置功能的这个事实会比它的性能损失来得更重要。