안녕하세요. 채랑이 아빠 프리아입니다.
음 어쩌다 보니 글을 하나 더 쓰게 되었습니다.
랜덤화 데이터 생성을 설명하다가 갑자기 얘기가 너무 이상한 데로 빠지고 있어서 글을 보는 사람들이 헷갈릴 것 같아 중간에 함수의 차이점을 설명하던 내용을 별도의 글로 구분하여 작성해야겠더라구요.
그래서 하나의 글이 추가로 생성되었습니다. ㅎㅎㅎ
Round, Rounddown, Roundup는 형제 함수라고 할 수 있을 정도로 사용방법이 동일합니다. 그리고 이 Round 3형제는 수학적인 요소의 수식입니다. 반올림, 올림, 내림의 의미입니다.
즉 지정한 자릿수 이하의 숫자를 반올림 할것이냐, 올림할것이냐, 내림할 것이냐를 결정하는 것이죠.
다만, 수학과 다른 것이 있다면 음수의 처리 방법입니다.
-1.6을 반올림하면 어떤 숫자가 되어야 할까요? -1일까요, -2일까요?
답은 -2입니다. 수학이나 엑셀의 Round나 동일한 결과가 나옵니다.
그럼 -1.6을 올림하면 어떤 숫자가 될까요?
수학적으로는 -1이라는 답을 내게 되나, 엑셀에서 Roundup을 걸면 -2가 되어 버립니다.
또, -1.6을 내림할 경우 수학적으로는 -2가 되나, 엑셀의 Rounddown을 걸면 -1이 되어 버립니다.
일반 수학과는 의미가 달라져 버리는 거죠.
이건, 사실상 엑셀에서의 오류라고 밖에 볼 수 없습니다.
참 황당한 일인 거죠. 혹시나 모르셨다면 참고하시기 바랍니다.(제가 말씀드리는 것은 엑셀 2022버젼입니다. 이전버전에서는 다를 수 있어요..)
자 여기서 버림(Trunc)의 요소를 보겠습니다. Trunc도 Round 3형제와 수식 구조는 동일합니다.
사용한 결과는 Rounddown과 동일합니다.
그렇다면 왜 버림이 있는지 이해가 되지 않을 수 있습니다. 왜 똑같은 결과가 나오는데 2개가 구분되어 있는것인가 하는 문제죠.
이유는 아주 단순합니다.
위에서 설명한 바와 같이, 올림은 요구하는 요구자리 이하의 숫자가 0보다 크면 큰 숫자를 향해 나아가고, 내림은 요구자리 이하의 숫자를 작은 숫자를 향해 나아가는 형식입니다.
즉 양수의 경우 올림은 0에서 멀어지는 쪽으로 움직이고, 내림의 경우 0에서 가까워는 쪽으로 움직입니다. 반대로 음수에서는 올림의 경우 0에서 가까워지는 방향으로 움직이고, 내림은 0에서 멀어지는 방향으로 움직입니다.
예를 들면 위에서 설명한 것처럼, 1.6을 올림하면 2가 되고, 1.6을 내림하면 1이 됩니다. 올림은 0에서 멀어지는 방향으로 갔고, 내림은 0에서 가까워지는 방향으로 갔죠.
음수에서는 -1.6을 올림하면 -1이 되고, -1.6을 내림하면 -2가 되어야 합니다. 올림은 0에서 가까워지는 방향으로, 내림은 0에서 멀어지는 방향으로 이동하죠.
그런데 버림의 경우에는 지정된 이하의 자릿수를 그냥 0으로 치환해 버리게 됩니다.
즉 1.6을 버리면 1이 되고, -1.6을 버리면 -1이 되는 것입니다.
쉽게 말하면 양수에서의 버림은 내림과 동일하게 취급되고, 음수에서의 버림은 올림과 동일하게 취급되는 것이죠.
그런데 아까 말한바와 같이 엑셀에서는 Rounddown은 무조건 0으로 가까워지도록 되어 있고, Roundup은 0에서 멀어지도록 설계가 되어 수학적인 올림, 내림이 달라져 버린 것입니다. 그래서 Rounddown과 Trunc 명령어가 똑같아져 버린 것이죠.
제대로 되어 있었다면 양수에서는 Rounddown과 Trunc가 동일한 결과를 내고, 음수에서는 Roundup과 Trunc가 동일한 결과를 내야 하는데, 엑셀에서는 양수와 음수 상관없이 Rounddown과 Trunc 가 동일해져 버린 것입니다.
마지막으로 Int의 경우 정수화입니다. 간단하게 소숫점 이하를 버리는 형태입니다.
그런데 여기서 황당한 것이 하나가 발생하게 됩니다.
이론적으로 Int는 소숫점 이하를 버리는 것이기 때문에 Trunc와 동일한 결과가 나와야 하지만, 결과는 생각과는 다릅니다.
결과론적으로 Int 함수를 쓰게 되면 수학적인 내림의 결과가 나오는 것을 볼 수 있습니다.
즉, 1.6을 Int를 걸면 1이 되고, -1.6을 Int를 걸면 -2가 되어 버립니다.
황당할 수 밖에 없습니다. 개념적으로 정수화는 버림의 의미를 가지거든요.(뭐 물론 수학에서는 정수화란 단어 자체가 없으니 제가 잘 못 알고 있을 수는 있어요.)
어쨋든 Int 함수를 쓰면 해당 숫자보다 작은 수의 정수로 치환된다는 것으로 이해하시길 바랍니다.
자, 여기서는 엑셀 수식을 설명하는 것이므로 수학적 의미는 제외하고, 아래와 같이 정리하고 마무리 하도록 하겠습니다.
자 오늘도 재밌으셨기를 바랍니다.
이만 물러갈께요 ^^