본문 바로가기
TIL

220626

by 김비누! 2022. 6. 26.

📝 JAVA JUnit 실수 0으로 나누기

자바에서 정수를 0으로 나누면 DivideByZeroException이 발생하지만
실수를 0으로 나누면 무한대infinity가 나온다.
위의 예제에서의 0은 double형으로,
'실수 0은 완벽한 0이 아니기 때문에 발생한다'고 생각했지만.....

 

1 / 0.0 = ∞, -1 / 0.0 = -∞로 정의해서 infinity가 나오는 것이다!
실수타입은 IEEE 745 표준을 따르는데 여기서 그렇게 정의했다고 한다.

    @Test
    public void testDivByZero() {
        assertTrue(Double.isInfinite(calc.div(num1,  0)));
    }

 

위 예제의 calc.div 함수는 num1(미리 정의된 실수, 0이 아님), 0을 double 매개변수로 받아 나눈 값을 리턴한다.
따라서 infinity가 나오게 되고, isInfinite 함수로 확인하여
assertTrue로 테스트 수행한다.

 

참고
[Java, C, C++ 기초 강좌] 산술연산자 그리고 형변환 ( + 모듈연산, 0으로 나누기)

'TIL' 카테고리의 다른 글

220619: 프레임워크 vs 라이브러리  (0) 2022.06.19
220603  (0) 2022.06.03
220525  (0) 2022.05.25
220524  (0) 2022.05.24
220523  (0) 2022.05.23

댓글