정수 곱하기 0이 가능한이유가 궁금합니다.
조회수 756회
안녕하세요. 동전계산프로그램을 만들때 아래코드를 작성하였습니다.
a, b, c = map(int, input().split())
result = a * 10 + b * 50 + c * 100
print(result)
하지만 왜 정수 나누기 0
는 오류가나고 정수 곱하기 0
이 오류없이 실행되는지 궁금합니다.
예를 들어서 5 나누기 0
는 수학적으로는 5 나누기 0/0
고 나누기를 곱하기로 바꿀때는 역수를 사용하니까 5 * 0/0
라서 결국 5 * 0
와 똑같다고 생각합니다. 아니면 0으로 나눈다를 인식하면 반사적으로 오류가 나나요?
2 답변
-
네. 0으로 나누기 오류는 아주 기계적으로 발생하는 문법상의 오류입니다.
5/0 = (5*0)/0
이니까 문제 없이 실행돼야 하는 거 아니냐 싶으실 텐데 그런 차원이 아니고 그냥숫자/0
이 등장하는 순간 인터프리팅/컴파일링 단계가 실패할 거에요.그게 왜 그러냐면… 흔히 하는 설명은
5/0
이란 5에서 0을 뺄 수 있는 횟수이기 때문에 어떤 답도 정답이 안 된다는 겁니다. 대강 찾아보면, 수학적으로 말해서5/0
이란 곱셈의 역원을 구하는 과정에서x*0 = 5
가 되는x
를 구하는 연산인지라 "정의할 필요가 없고 무의미"하다고 하네요. 이 이상은 대학수학을 공부하신 분들의 전문적인 설명을 기약하기로 하고…아무튼 애초에 성립하지 않는 연산인 관계로 대부분의 프로그래밍 언어는 이 연산을 거부하게 되어 있습니다. 사용자가 제수를 임의 지정할 수 있는 나눗셈을 구현하실 때는 무조건
제수 != 0
처리를 해야 한다고 기억하시는 게 좋습니다.+ 정수 곱하기 0이 가능한 이유는 명확합니다. +5를 0번 더한 것이기 때문에 0이 됩니다. 방금 지은 창고 안에 사과 5개들이 상자가 0개 있다고 하면 그 창고에 사과는 몇 알 있는가? 그건 할 말이 있지요.
-
전개한 논리에 오류가 있습니다.
0은 0/0이 아닙니다. 0/1 또는 0/2 또는 0/3 이죠.
따라서 0으로 나누기와 0으로 곱하기는 다릅니다. 매우 다릅니다.
댓글 입력