Eventuali duplicati:
How can I check if multiplying two numbers in Java will cause an overflow?Come prevenire l'overflow dei numeri interi nel codice Java?
Supponiamo che io sono un metodo di classe Java, che utilizza *
e +
operazioni.
int foo(int a, int b) { ... // some calculations with + and * }
Come assicurarsi che nessuno di overflow si verifica in foo
?
Credo di poter usare sia BigDecimal
o sostituire tutti + e * con "wrapper" come:
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; }
ci sono modi migliori per assicurarsi che nessun int
di overflow si verifica in un metodo Java?
Perché si controlla se è inferiore a zero? Un int può andare ben al di sotto di 0. – 11684
Per essere precisi, questo è il range di un int: -2,147,483,648 a 2,147,483,647 – 11684
Vuoi bloccare i valori? –