在python中,相同数字的java乘法返回不同的输出

ogq8wdun  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(247)

我将一些java代码移植到python中,但是由于某些原因,结果不同。
java

int vi = 3997125 * 3997125;

Output: -270075495

python

vi = 3997125 * 3997125

Output: 15977008265625

如何在python中实现相同的输出java返回?

egdjgwm8

egdjgwm81#

声明为类型的变量的范围 int is-2147483648至2147483647。
所以当你这么做的时候

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

超出int类型的范围。
按照建议,您可以将类型更改为 long .

gr8qqesn

gr8qqesn2#

java代码段溢出。为了避免这种情况,你可以使用 long 学生:

long vi = 3997125L * 3997125L;
xlpyo6sf

xlpyo6sf3#

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

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

输出:

-270075495

相关问题