가장 가까운 정수가 두 개라면 어떻게 하나요?
−1.5에서 −2까지의 거리도 0.5이고 −1까지의 거리도 0.5입니다. ‘가장 가까운 정수’라는 설명만으로는 결과를 하나 고를 수 없습니다. 같은 거리일 때 적용할 추가 규칙이 필요합니다.
자바스크립트의 Math.round는 이 경우 양의 무한대 쪽, 즉 숫자선 오른쪽의 정수를 고릅니다. 따라서 1.5는 2, −1.5는 −1입니다. 음수에서 숫자가 커지는 방향과 절댓값이 커지는 방향은 서로 다릅니다.
−1.51과 −1.49도 같은 규칙을 쓰나요?
−1.51은 −1보다 −2에 더 가깝습니다. Math.round(-1.51)은 −2입니다. −1.49는 −1에 더 가까워 −1이 됩니다. 중간값의 동률 처리 규칙은 두 거리가 정확히 같은 경우에 적용됩니다.
활동의 입력을 −1.51, −1.5, −1.49로 바꾸며 양옆 정수와의 거리를 살펴보세요. 예상 결과를 먼저 고르고 실행하면 ‘음수는 모두 한쪽으로 간다’는 잘못된 규칙을 반례로 바로잡을 수 있습니다.
0처럼 보이는 결과가 왜 −0일 수 있나요?
Math.round(-0.5)의 결과는 음의 영, −0입니다. 화면에 단순히 문자열로 바꾸면 0처럼 보일 수 있고, −0과 0을 ===로 비교하면 참입니다. 그렇다고 두 값의 부호 정보가 모든 연산에서 같다는 뜻은 아닙니다.
Object.is(result, -0)은 음의 영을 구별합니다. 또 1을 +0으로 나눈 결과는 Infinity이고 −0으로 나눈 결과는 -Infinity입니다. 이 실험은 실제 브라우저에서 Math.round와 Object.is를 실행하고 부호를 명시해 표시합니다.
다른 반올림 방법을 가져오면 왜 위험한가요?
앞선 반올림 글에서는 가까운 짝수와 0에서 먼 쪽 등 여러 정책을 비교했습니다. 그때의 정책 이름을 자바스크립트 함수에 그대로 붙이면 음수의 중간값에서 결과가 달라질 수 있습니다. 이번 글은 Math.round라는 특정 함수의 실제 동작을 확인합니다.
Math.floor(x+0.5)를 언제나 같은 계산으로 대체할 수도 없습니다. 예를 들어 x가 −0.5이면 Math.round는 −0을 유지하지만 덧셈 후 floor는 +0이 됩니다. 큰 값이나 이진 부동소수점 경계에서는 표현 오차도 따로 살펴야 합니다.
AI가 만든 코드의 설명을 어떻게 검토하나요?
먼저 함수 이름과 입력의 부호, 처리할 자릿수, 중간값 정책을 확인합니다. 다음에는 양수 중간값, 음수 중간값, 중간값 양옆, 영 근처를 시험합니다. 결과 숫자만 보여 주지 말고 어떤 규칙으로 골랐는지 설명하게 해 보세요.
이 활동의 범위는 −5에서 5까지의 유한한 Number 값입니다. 금융·통계·문서 표시에는 목적에 맞는 별도 정책이 필요할 수 있습니다. 표시용 반올림과 다음 계산에 사용할 원자료를 바꾸는 일도 구별합니다.

