잡담

알만툴에서 0으로 나누기를 실험해 보았습니다.

by Bunny_Boy posted Aug 30, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

calc_division0.png

계산기에서 어떤 수를 0으로 나누면 위와 같이 오류를 내뱉습니다.

프로그래밍에서도 마찬가지로 변수에 / 0을 하면 오류를 내뱉습니다.

왜 그럴까요?

나눗셈은 일반적으로 곱셈의 역연산으로 정의됩니다.

x × y = z이면 곧 x = z ÷ y입니다.

즉, 5 × 3 = 15이면 곧 5 = 15 ÷ 3이 되는 것입니다.

만약 여기서 y의 값이 0이 된다면, 즉, x × 0 = z, x = z ÷ 0이 된다면

어떤 수든 0을 곱하면 0이 되므로

앞의 x × 0 = z는 곧 x × 0 = 0이 됩니다.

여기서 x의 가능성은 무한히 많아져서 하나로 정의될 수가 없습니다.

그렇기 때문에 어떤 수를 0으로 나눈 값은 정의되지 않는 것입니다.

출처: 위키백과의 0으로 나누기 ([바로가기])


이쯤에서 각설하고 본론으로 들어가서

만약 알만툴에서 변수에다가 나누기 0을 하면 과연 어떻게 될까 실험을 해 보았습니다.


첫 번째 방법

변수의 조작에서 그냥 나누기 0 하기


rmvxa_div0_1.png

이렇게 그냥 단순하게 변수 / 0  이벤트를 짠 후 플레이 테스트를 돌려 보았습니다.


rmvxa_div0_2z.png

0으로 나누기를 할 변수를 사전에 조작하여 1로 만든 후


rmvxa_div0_3z.png

변수 / 0 이벤트를 실행해 보았습니다.

결과는...


rmvxa_div0_4z.png

튕기지 않고 그냥 넘어갔습니다.

단지 0으로 나누기를 돌린 변수가 0이 되었을 뿐입니다.

이렇게 나오는 게 어째 모순 같지만(실제로 y=1/x 함수의 그래프를 그려보면 x값이 0에 가까워질수록 y값은 무한대에 가까워집니다.)

어쨌든 오류로 튕기진 않은 게 다행(?)이네요.

알만툴에서 0으로 나누기를 할 경우 연산이 실행되지 않도록 설계한 모양입니다.


두 번째 방법

스크립트를 이용해서 나누기 0 하기


rmvxa_div0_5.png

변수의 조작이 아닌 스크립트로 나누기 0으로 해 보았습니다.

과연 이번엔 어떻게 될까요?


rmvxa_div0_6z.png

무서운 재앙을 예고하는 대사와 함께...


rmvxa_div0_7.png

이와 같이 0으로 나누었다는 오류를 내뱉으며 게임이 튕깁니다.


스크립트를 뜯어 본 결과 변수의 조작을 통해 오류를 일으킬 경우

문제의 변수 값을 0으로 맞춰놓고 계속 진행시키는 처리가 되어 있었습니다.

그래서 첫 번째 방법을 사용할 경우 튕기지 않고 게임이 진행되었습니다.

그러나 두 번째 방법은 이 처리를 우회하기 때문에 튕기게 되는 것입니다.