问题描述
我正在尝试计算这个表达式的值:
int((1770246808796936040 * 1103515245 + 12345 / 65536) % 32768)
它给出了 0
。如果没有 int
转换,它也是 0
。
有谁知道为什么会这样?这些数字对 Python 来说太大了吗?有什么办法可以处理这个问题吗?感谢您的帮助。
解决方法
根据表达式计算出的数字
1770246808796936040 * 1103515245 + 12345 / 65536
可以被 32768 整除,这就是为什么你得到 0。
为了让您了解 Python 处理大量数字的能力,您可以看到:
>>> 10**1000
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000
,%
运算符给出除法的余数。由于
(1770246808796936040 * 1103515245 + 12345 / 65536)
可以被 32768 整除,结果为 0。
要获得商,您应该使用运算符 /
而不是 %
。
因为数字的组合是这样的结果为0。将任何数字增加或减少偶数1,您将看到它不是0。例如见下文。我把 32768 改为 32769。
print(int((1770246808796936040 * 1103515245 + 12345 / 65536) % 32769))
它给了。
21725