将相同值的2个整数乘以300会产生不同的结果

时间:2017-12-03 21:44:50

标签: python python-2.7 python-2.x division

我试图找出为什么当我决定乘以而不是分裂时,为什么会出现283的差异。

这是我终端的一些Python代码。正如你所看到的,两个变量都是整数,但取决于我是否将一个变为另一个变量或乘以另一个变量稍微改变了这个值。

>>> type(times), times
(<type 'int'>, 1512296383)
>>> type(payout), payout
(<type 'int'>, 5040987)
>>> [times / 300 - payout, times - payout * 300]
[0, 283]
>>> [times / 300, payout, times, payout * 300]
[5040987, 5040987, 1512296383, 1512296100]

2 个答案:

答案 0 :(得分:1)

您正在执行integer division,它会丢弃小数点后的所有内容。由于times不能被300整除,因此您将获得截断结果。这是一种更简单的方法:

>>> 1512296383 / 300 * 300
1512296100

答案 1 :(得分:1)

您的问题是在Python 2.x中,整数除法不会返回精确的浮点结果。将一个值转换为浮点数表明该除法不完全等于300:

>>> float(1512296383)/5040987
300.0000561397996

因此,当您执行1512296383/5040987时,您将获得整数300,这将引入一个小错误。