Возможный дубликат:
Как проверить, может ли перемножение двух чисел в Java вызвать переполнение?
Предположим, что у меня есть метод класса Java, который использует операции * и +.
int foo(int a, int b) {
... // some calculations with + and *
}
Как убедиться, что переполнение не происходит в foo?
Я думаю, я могу либо использовать BigDecimal, либо заменить все + и * на "обертки", например:
int sum(int a, int b) {
int c = a + b;
if (a > 0 && b > 0 && c < 0)
throw new MyOverfowException(a, b)
return c;
}
int prod(int a, int b) {
int c = a * b;
if (a > 0 && b > 0 && c < 0)
throw new MyOverfowException(a, b)
return c;
}
Есть ли лучшие способы убедиться, что в методе Java не происходит переполнение int?