我在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。
有人可以告诉我,这里发生了什么?
答案 0 :(得分:1)
我希望您使用的是Python 3.在Python 3中,将整数与NSLayoutAttribute.RighMargin
运算符分开时,它会将它们转换为float并生成float结果。浮点数的精度有限,因此您会看到舍入错误。
要获得整数除法,没有舍入误差,可以使用/
运算符,它提供真正的整数除法。只需将作业更改为//
即可:
j