aheui.github.io icon indicating copy to clipboard operation
aheui.github.io copied to clipboard

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

Open xnuk opened this issue 10 years ago • 10 comments

xnuk avatar Aug 07 '15 13:08 xnuk

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

youknowone avatar Jan 10 '16 02:01 youknowone

반영해 봤습니다.

xnuk avatar Jan 10 '16 20:01 xnuk

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

puzzlet avatar Jan 11 '16 07:01 puzzlet

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

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

youknowone avatar Jan 11 '16 08:01 youknowone

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

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

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

xnuk avatar Jan 11 '16 09:01 xnuk

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

youknowone avatar Jan 11 '16 09:01 youknowone

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

xnuk avatar Jan 11 '16 09:01 xnuk

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

xnuk avatar Jan 11 '16 09:01 xnuk

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

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

youknowone avatar Jan 11 '16 16:01 youknowone

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

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

puzzlet avatar Jan 11 '16 16:01 puzzlet