Возможный дубликат:
Как проверить, может ли перемножение двух чисел в 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
?