我将一些java代码移植到python中,但是由于某些原因,结果不同。java
int vi = 3997125 * 3997125; Output: -270075495
python
vi = 3997125 * 3997125 Output: 15977008265625
如何在python中实现相同的输出java返回?
egdjgwm81#
声明为类型的变量的范围 int is-2147483648至2147483647。所以当你这么做的时候
int
3997125 * 3997125 = 15,977,008,265,625
超出int类型的范围。按照建议,您可以将类型更改为 long .
long
gr8qqesn2#
java代码段溢出。为了避免这种情况,你可以使用 long 学生:
long vi = 3997125L * 3997125L;
xlpyo6sf3#
模拟python整数到带溢出的32位整数值的转换
def bit32(value): shift = 1 << 32 return value % shift - shift if value.bit_length() >= 32 else value bit32(3997125*3997125)
输出:
-270075495
3条答案
按热度按时间egdjgwm81#
声明为类型的变量的范围
int
is-2147483648至2147483647。所以当你这么做的时候
超出int类型的范围。
按照建议,您可以将类型更改为
long
.gr8qqesn2#
java代码段溢出。为了避免这种情况,你可以使用
long
学生:xlpyo6sf3#
模拟python整数到带溢出的32位整数值的转换
输出: