. Java의 정석

[Java] 사칙 연산자, 0으로 나누기

박인영 2021. 7. 7. 01:10

 

 

 

<0으로 나누기>

 

나눗셈은 일반적으로 곱셈의 역연산으로 정의된다.
즉, 어떤 b와 c에 대해
a * b = c 인 a가 유일할 때, 나눗셈은 
a = c / b 와 같이 정의 된다.
이때 b가 0일 경우, a의 값에 관계없이 c는 항상 0이 되고,
a * 0 = 0 에서 a의 가능성은 무한히 많아 하나로 정해지지 않는다.

따라서 a는 존재하지 않으며
0으로 나누기 하는 수학적 의미는 없다.

 

 

 

ⓒ wikipedia

위 그래프는 y = 1 / x 꼴의 반비례 그래프이다.

한 변수의 값이 0에 가까워질수록

다른 변수의 값은 무한대에 가까워지는 것을 볼 수 있다.

 

 


컴퓨터 프로그래밍에서는 어떤 수를 0으로 나누는 경우

오류를 발생시키거나, NaN을 반환한다.

(NaN : Not a Number. 숫자가 아니다)
그 이유는 컴퓨터 프로그래밍은 

A÷B의 몫을 A에 B로 몇 번 뺄 수 있느냐로 

인식하기 때문이다.(이 경우 그 몫은 무한대가 되며, 나머지는 없다.)

 

그렇다면 Java에서는 어떨까?

 

 

 

<정수 / 0>

만일 Java에서 정수인 피연산자를 0으로 나눈다면 어떻게 될까?

컴파일은 정상적으로 되지만, 실행시 오류가 발생한다.

 

 

 

< 정수 / 0.0 >


그렇다면 정수인 피연산자를 0이 아닌 0.0으로 나눈다면?

컴파일이 정상적으로 되고, Infinity(무한대)가 출력된다.