无法在 Python 中计算值

问题描述

我正在尝试计算这个表达式的值:

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