Duplicar posibles:
How can I check if multiplying two numbers in Java will cause an overflow?Cómo evitar el desbordamiento de enteros en el código de Java?
Supongamos que tengo un método de clase Java, que utiliza *
y +
operaciones.
int foo(int a, int b) { ... // some calculations with + and * }
cómo asegurarse de que ningún desbordamiento se produce en foo
?
supongo que tampoco puedo usar BigDecimal
o reemplazar todos + y * con "envoltorios" como:
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; }
¿Hay mejores maneras de asegurarse de que ningún int
desbordamiento se produce en un método de Java?
¿Por qué compruebas si está por debajo de cero? Un int puede ir muy por debajo de 0. – 11684
Para ser precisos, este es el rango de un int: -2,147,483,648 a 2,147,483,647 – 11684
¿Desea fijar los valores? –