当前位置: 首页 > 面试题库 >

如何检查Java中的两个数字是否会引起溢出?

桓瀚
2023-03-14
问题内容

我想处理将两个数字相乘会导致溢出的特殊情况。代码看起来像这样:

int a = 20;
long b = 30;

// if a or b are big enough, this result will silently overflow
long c = a * b;

那是一个简化的版本。在实际程序中,a并且b在运行时从其他地方获取。我想要实现的是这样的:

long c;
if (a * b will overflow) {
    c = Long.MAX_VALUE;
} else {
    c = a * b;
}

你如何建议我最好编写此代码?

更新:ab总是非负在我的情况。


问题答案:

Java的8有Math.multiplyExact,Math.addExact等,为整数且长。这些会引发未经检查ArithmeticException的溢出。



 类似资料:
  • 嗨,我正在尝试解决Udemy练习:编写一个名为hasSharedDigit的方法,其中包含int类型的两个参数。 每个数字应在10(含)-99(含)之间。如果其中一个数字不在范围内,则该方法应返回false。 如果两个数字中都有数字,例如12和23中的2,则该方法应返回true;否则,该方法应返回false。 我一直在得到真实,而有共享数字(9,99)我无法发现为什么.. }

  • 问题内容: 在JavaScript中,如果窗口大小大于500px,我要告诉浏览器执行某些操作。我这样做是这样的: 这很好用,但是我想使用相同的方法,但是要有一定范围的数字。因此,如果窗口大小在500像素到600像素之间,我想告诉我的浏览器来做一些事情。我知道这行不通,但是这是我的想象: 在JavaScript中甚至可能吗? 问题答案: 测试是否大于或小于表示值或值本身均不会导致条件变为真。

  • 在JavaScript中,如果窗口大小大于500px,我会告诉浏览器做些什么。我是这样做的: 这很有效,但我想用同样的方法,但有一系列的数字。所以我想告诉我的浏览器,如果窗口大小在500px到600px之间,我就去做一些事情。我知道这是行不通的,但我是这么想的: 在JavaScript中,这可能吗?

  • 以下是我的项目的细节: 字谜:这个项目的目的是创建一个游戏,在这个游戏中,用户可以看到一个单词的字谜,并且必须在有限的尝试次数内猜出正确的单词。项目特点: null

  • 问题内容: 如果您尝试找出int是否介于数字之间,为什么不能这样做呢? 取而代之的是,您必须做 这似乎有点开销。 问题答案: 一个问题是三元关系构造会引入严重的解析器问题: 当您尝试使用典型的PGS用这些生成物表达语法时,您会发现在first的位置存在shift-reduce冲突。解析需要先查找任意数量的符号,然后才能确定是否已使用二进制或三进制形式,以查看是否存在第二个符号。在这种情况下,您不能

  • 问题内容: 在解析字符串之前,如何检查字符串是否为数字? java 字符串 数字 问题答案: 使用及更高版本:或。 使用Apache Commons Lang 3.4及以下版本:或。 你还可以使用返回true空字符串,并忽略字符串中的内部空格。另一种方法是使用根据Java基本检查数字是否可解析的方法。(链接的javadocs包含每种方法的详细示例。)