Java求和2负数 [英] Java sum 2 negative numbers
问题描述
我正在尝试将Java中的函数转换为pl/pgsql,发现的一个问题是当我尝试对2个负数求和并得到一个正数时,更具体地说:
I'm trying to convert a function in java to pl/pgsql, and one problem that I found is when I'm trying to sum 2 negative numbers, and a get a positive number, more specifically :
public void sum(){
int n1 = -1808642602;
int n2 = -904321301;
System.out.println(n1 + n2);// result is 1582003393
}
在pl/pgsql中,我得到一个整数超出范围的错误,并且如果我将变量类型更改为bigint,我得到的是2个负数的正常和,即-2712963903,而不是1582003393
And in pl/pgsql I get an integer out of range error, and if I change the variables type to bigint i get a normal sum of 2 negative numbers, that is -2712963903, instead of 1582003393
如何在不打印整数超出范围的错误的情况下如何使pl/pgsql获得相同的结果?
How do I do to pl/pgsql get the same result without printing an integer out of range error?
推荐答案
之所以会发生这种情况,是因为Java int下溢并且没有告诉您.
This happens because the Java int underflows and doesn't tell you.
要获得您在pl中寻找的答案,您需要使用bigint.然后检测结果小于Java Integer.MIN_INT(-2 ^ 31)的情况,这是Java给出肯定结果的情况.要获得Java会给您的东西,请添加2 ^ 32.
To get the answer you are looking for in pl, you need to use bigint. Then detect the case when the result is less than Java Integer.MIN_INT (-2^31), which is the case where Java will give a positive result. To get what Java would give you, add 2^32.
这篇关于Java求和2负数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!