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。为避免这种情况,您可以使用 long
s:
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
我正在将一些 Java 代码移植到 Python,但由于某些原因,结果不同。
Java
int vi = 3997125 * 3997125;
Output: -270075495
Python
vi = 3997125 * 3997125
Output: 15977008265625
如何在 Python 中完成相同的输出 Java returns?
Java 片段 overflows。为避免这种情况,您可以使用 long
s:
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