Java 相同数字的乘法 returns 不同的输出 Python

Java multiplication of same number returns different output in Python

我正在将一些 Java 代码移植到 Python,但由于某些原因,结果不同。

Java

int vi = 3997125 * 3997125;

Output: -270075495

Python

vi = 3997125 * 3997125

Output: 15977008265625

如何在 Python 中完成相同的输出 Java returns?

Java 片段 overflows。为避免这种情况,您可以使用 longs:

long vi = 3997125L * 3997125L;

声明为int类型的变量的范围是-2,147,483,648到2,147,483,647。

所以当你这样做时

3997125 * 3997125 = 15,977,008,265,625

超出了 int 类型的范围。

按照建议,您可以将类型更改为 long

模拟python整数到32位整数值的溢出

def bit32(value):
    shift =  1 << 32
    return value % shift - shift if value.bit_length() >= 32 else value
bit32(3997125*3997125)

输出:

-270075495