가능한 중복 :
How can I check if multiplying two numbers in Java will cause an overflow?Java 코드에서 정수 오버플로를 방지하는 방법은 무엇입니까?
한다고 가정 내가 *
및 +
작업을 사용하는 Java 클래스 메소드를 가지고있다.
int foo(int a, int b) { ... // some calculations with + and * }
foo
에 오버플로가 발생하지 않도록하는 방법은 무엇입니까?
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; }
더 int
오버 플로우가 자바 메소드에서 발생하지 있는지 확인하기 위해 더 나은 방법이 있습니다
은 내가 BigDecimal
를 사용하거나 모든 +와 * 같은 "래퍼"로 교체하거나 추측?
왜 0 미만인지 확인합니까? 정수는 0보다 훨씬 작을 수 있습니다. – 11684
정확히 말하면 int의 범위는 -2,147,483,648에서 2,147,483,647입니다. – 11684
값을 고정하려고합니까? –