【发布时间】:2018-05-24 20:59:03
【问题描述】:
我们知道对于两个数字“a”和“b”; a & b 的乘积等于 GCD(a,b) 和 LCM (a,b) 的乘积。
所以为了找到两个数字的 LCM,我用 Python 编写了这个算法:
def gcd(a,b):
if b==0:
return a
else:
a_rem = a%b
return gcd(b,a_rem)
print(int(a*b/(gcd(a,b)))
现在在检查不同的测试用例时,我发现了这一点:
输入: 226553150 1023473145
我的输出: 46374212988031352
正确的输出: 46374212988031350
我不知道为什么会这样,只有最后一位数字是错误的!!
【问题讨论】:
-
这些数字超出了浮点数的安全整数限制,是的。因此,与其从 float 转换回来,不如始终坚持 int
标签: python-3.x casting integer-division