Python计算错误

时间:2015-12-20 09:39:16

标签: python output

我在python中发现了一些非常奇怪的代码:

num = 99999999999999999999999999999

for i in range(2, num):
    if num % i == 0:
        j = int(num / i)
        print(num, '=', i, '*', j)
        break
else:
    print(num, 'is prime')

Python正在给我

99999999999999999999999999999 = 3 * 33333333333333333409747959808

作为输出,显然是错误的。随着更大的num越来越多,输出得到了wronger。

有人可以告诉我,这里发生了什么?

1 个答案:

答案 0 :(得分:1)

我希望您使用的是Python 3.在Python 3中,将整数与NSLayoutAttribute.RighMargin运算符分开时,它会将它们转换为float并生成float结果。浮点数的精度有限,因此您会看到舍入错误。

要获得整数除法,没有舍入误差,可以使用/运算符,它提供真正的整数除法。只需将作业更改为//即可:

j