Java求和2负数 [英] Java sum 2 negative numbers

查看:116
本文介绍了Java求和2负数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆