신뢰할 수 있는 정수 나눗셈 방법
정수 나누기는 기본적으로 0으로 반올림되므로 문제가 발생할 수 있습니다. 항상 정리하려면 더 나은 솔루션이 필요합니다.
기사에 제공된 예에서는 피연산자를 배정밀도 부동 소수점 숫자로 변환하고 Math.Ceiling()
을 사용하는 것이 가능한 해결 방법이지만 이는 비표준적이고 비효율적인 것으로 간주됩니다.
다음 방법을 권장합니다.
1. 사양을 명확히 정의하세요
2. 테스트 가능한 알고리즘 설계
문제를 더 작은 단계로 나누기:
3. 솔루션 구현
다음은 구현 예입니다.
<code class="language-java">public static int DivRoundUp(int dividend, int divisor) { if (divisor == 0) throw new IllegalArgumentException("除数为零"); if (divisor == -1 && dividend == Integer.MIN_VALUE) throw new ArithmeticException("整数溢出"); int quotient = dividend / divisor; boolean dividedEvenly = (dividend % divisor) == 0; if (dividedEvenly) return quotient; boolean roundedDown = ((divisor > 0) == (dividend > 0)); return roundedDown ? quotient + 1 : quotient; }</code>
이 알고리즘은 나눌 수 없는 모든 나누기 결과를 반올림하는 지정된 동작을 따릅니다. 또한 오버플로 및 0으로 나누기 오류를 매우 잘 처리합니다. 이것이 가장 우아한 솔루션은 아니지만 명확하고 테스트 가능하며 정확합니다.
위 내용은 정수 나누기가 항상 반올림되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!