Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[제안] 나눗셈의 소수점 처리 #10

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

[제안] 나눗셈의 소수점 처리 #10

wants to merge 1 commit into from

Conversation

xnuk
Copy link

@xnuk xnuk commented Aug 7, 2015

No description provided.

@youknowone
Copy link
Member

정수 연산에서 소수 이야기는 보통 잘 안하는거 같은데,
나눗셈과 나머지 연산에서 그 몫이 나누어 떨어지지 않는 경우, 나머지는 항상 나누는 값보다 작은 양수이다.
와 같이 표현하는건 어떨까요

@xnuk
Copy link
Author

xnuk commented Jan 10, 2016

반영해 봤습니다.

@puzzlet
Copy link
Member

puzzlet commented Jan 11, 2016

혹시 ㄹ도 좀더 명확하게 써 주실 수 있을까요?

@youknowone
Copy link
Member

단 몫이 0보다 작고 나머지가 0이 아닌 경우 몫에다 1을 더한 값을 집어 넣습니다.
이 표현은 몫을 재정의하는 표현인데, 기존에 다른 정의가 있어야 쓸 수 있는 표현이라고 생각됩니다.

나눗셈 연산을 피제수 = 제수 * 몫 + 나머지 로 정의하면 나머지를 엄밀히 정의하는 것으로 몫은 자연스럽게 정해질 것 같습니다.

@xnuk
Copy link
Author

xnuk commented Jan 11, 2016

단 몫이 0보다 작고 나머지가 0이 아닌 경우 몫에다 1을 더한 값을 집어 넣습니다.

해당 부분은 jsaheui가 parseInt(b/a)로 구현되어서, 나눈 값을 십진수 문자열로 변환할 경우 소수점 앞부분에 해당하는 정수만 취하는 방식으로 구현되어 있어 그 점을 고려하여 추가한 표현입니다. 이러는 경우 jsaheui에서 사발바반타나-3이 아니라 -2가 됩니다. 반대로 피제수 = 제수 * 몫 + 나머지에서 제수 > 나머지 >= 0로 정의하고 몫은 정수라고 정의하면 사발바반타나-3이 됩니다.

우선 사발바반타나-3이 되도록 해당 문구는 제거해보겠습니다.

@youknowone
Copy link
Member

그렇게 정의하려면 몫은 항상 0에서 가까운 쪽을 취한다거나 하는 다른 정의 방법을 쓸 수 있을거같아요.
지금까지 구현체에 의존해 왔다면 차라리 명시하지 않는 것은 어떨까요?

@xnuk
Copy link
Author

xnuk commented Jan 11, 2016

@youknowone 저는 5/-2-3이 돼야 하는지 -2가 돼야 하는지 명시하는 편이 음수에 대한 나눗셈의 값을 보장할 수 있어서 좋다고 생각합니다.

@xnuk
Copy link
Author

xnuk commented Jan 11, 2016

@puzzlet 어느 부분에서 덜 명확하다 생각하시나요?

@youknowone
Copy link
Member

저는 처음에 댓글 달 때는 jsaheui에서 그런 구현이 되어 있는지 몰랐었는데, 5/-2가 -3일수도, -2일수도 있는 게 현재의 표준이라면, 그렇지 않다면 지금 그 중 하나로 고정시키는건 스펙 문서 수정이 아닌 표준 변경이라고 생각해요.
음수의 나눗셈과 나머지를 정의하는 방법은 통용되는 것만 여러가지이고 ("나눗셈"이라고 표현했을 때 다른 구현이 나올 수 있는 이유) jsaheui 구현이든 변경된 설명이든 모두 널리 통용되는 정의 중 하나라서 어느 한 쪽을 "당연한" 상태로 보고 변경하는건 원래 표준을 지키던 구현체를 덜 존중하는 결정인듯 합니다.

하지만 역시 스펙 결정은 최종적으로 @puzzlet 님 마음에 드는걸로 :)

@puzzlet
Copy link
Member

puzzlet commented Jan 11, 2016

지금은 도 단순히 '나눈 값'과 '나머지'이라고만 되어 있는데, 음수의 나눗셈의 정의가 모호하기 때문에 드렸던 말씀입니다.

그리고 굳이 jsaheui에 맞춰서 표준을 정할 필요는 없다고 생각합니다. 명백히 jsaheui 구현이 틀렸던 적도 있었던 것 같고요.

* ㄹ은 **나머지** 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 나머지를 저장공간에 집어넣습니다.
* ㄴ은 **나눗셈** 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나누어 나온 몫을 저장공간에 집어넣습니다.
* ㄹ은 **나머지** 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나누어 나온 나머지를 저장공간에 집어넣습니다.
* 나눗셈과 나머지 연산에서, 나머지는 항상 0보다 크거나 같고 나누는 값(제수)보다 작아야 합니다.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 말대로라면 예를 들어 -5 / -2라면 나머지가 0보다 크거나 같고 -2보다 작아야 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants