잡담/궁금증 해결
divide zero
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
반응형