lms0806 2024. 10. 27. 23:05
728x90
반응형

오늘은 프로그래밍 언어에서 divide(나누기)시 발생하는 현상들에 대해서 다뤄보고자 합니다.

 

System.out.println(1 / 0);

다음 코드를 실행하면 어떤 결과가 나올까요?

Exception in thread "main" java.lang.ArithmeticException: / by zero

에러가 발생합니다.

 

System.out.print(1.0 / 0);

그러면 다음과 같은 코드를 실행하면 어떤 결과가 나올까요?

Infinity

예상과는 다르게 error가 발생하지 않습니다.

 

GPT에 물어보니

1.0 / 0: 이 연산은 double 타입과 int 타입의 혼합 연산입니다. 0은 정수 타입이지만, 1.0이 double이므로 Java는 자동으로 0을 double로 변환하여 계산합니다. 이 경우에도 0으로 나누는 것이기 때문에 결과는 여전히 Infinity가 됩니다.

라고 합니다.

 

1.0 / 0을 진행할 시, 0을 0.0으로 변경하고, 0.0으로 나누게 되면 Infinity(무한)이 나오게 됩니다.

 

System.out.print(1 / 0.0);

다음과 같은 코드도 마찬가지로 1을 1.0으로 변경하여 사칙연산을 수행하기 때문에 Infinity가 발생합니다.

 

JAVA에서만 다음과 같은 결과가 나오는건지 확인하기 위하여 CPP로 확인해본 결과

#include<iostream>

using namespace std;

int main(){
	cout << 1.0 / 0 << "\n";
}

와 같은 코드를 실행하면 inf(무한)이 나오게 됩니다.

728x90
반응형