python 3中long int division的区别

时间:2016-09-10 04:01:04

标签: python python-3.x long-integer division integer-division

在python中进行大量分割时,我遇到了一个奇怪的情况。

int(1012337203685477580 / 2) = 506168601842738816

int(1012337203685477580 >> 1) = 506168601842738790 

为什么这两种方法有区别? int()似乎至少是int64,因为int(2 ^ 63 - 1)和2 ^ 63 - 1是相同的值。

1 个答案:

答案 0 :(得分:4)

在Python 3中,/是真正的除法,因此您将获得浮点结果,以及所需的所有精度问题。而是使用//进行整数除法:

>>> 1012337203685477580 / 2
5.061686018427388e+17
>>> 1012337203685477580 // 2
506168601842738790
>>> 1012337203685477580 >> 1
506168601842738790