잔업 계산기를 만들며 확인한 209시간·가산수당·계산 오차

잔업 계산기를 만들며 확인한 209시간·가산수당·계산 오차

잔업정산기 코드의 월 임금÷209와 1.5배 계산을 살펴봤습니다. 적용 전제, 시간 입력, 원 단위 처리 순서에 따라 결과가 어떻게 달라지는지 재현 가능한 숫자와 도구의 한계를 정리했습니다.

작성: FlexM Studio · 자료 및 코드 확인: 2026-10-07 · 발행 예정: 2026-10-17

계산 코드를 읽으면 가정을 찾을 수 있다

FlexM 잔업정산기의 확인한 코드에서는 입력 급여를 209로 나눠 시간당 금액을 구하고 월 잔업시간에 1.5를 곱합니다. 마지막 결과에는 Math.floor를 적용합니다. 간단한 코드이지만 입력 급여, 환산 시간, 잔업 종류, 반올림 순서라는 네 가지 가정이 들어 있습니다.

화면에 “급여”라고 쓰인 입력값이 법적으로 확정된 통상임금이라는 뜻은 아닙니다. 사용자가 넣은 월 임금에 어떤 수당이 포함되는지 검토하지 않으면 산식이 정확해도 비교 대상이 달라집니다. 개발자가 계산식을 보여 주는 이유는 숫자만 믿도록 하기보다 입력 전제를 확인할 수 있게 하기 위해서입니다.

209시간은 어떤 근무를 가정하는가

주 40시간과 유급주휴 8시간을 월 단위로 환산할 때 통상 사용하는 기준이 209시간입니다. 주당 48시간에 연간 주 수를 월로 환산하는 계산이 바탕에 있습니다. 주휴를 포함한 유급 기준 시간이며 실제 한 달의 출근시간을 단순 합산한 숫자는 아닙니다.

단시간 근무, 유급시간 구조가 다른 계약, 별도 근로시간제에 모든 경우 209를 그대로 대입하지 않습니다. 월 임금에서 고정 연장수당까지 포함해 나눈 뒤 다시 연장 대가를 더하면 중복될 수 있습니다. 도구의 고정 분모는 편리함을 주지만 적용 범위를 좁혀 이해해야 합니다.

250만 원과 잔업 10시간을 같은 순서로 계산

월 입력 임금 2,500,000원, 잔업 10시간이라는 가상 입력을 사용합니다. 2,500,000 ÷ 209는 약 11,961.722488원입니다. 이를 중간에 반올림하지 않고 10 × 1.5를 곱하면 약 179,425.837321원이며 현재 코드의 소수점 버림 결과는 179,425원입니다.

반면 시급을 먼저 11,962원으로 반올림한 다음 계산하면 179,430원으로 5원 차이가 납니다. 20시간에서는 마지막에 버린 값이 358,851원, 시급을 먼저 반올림한 값이 358,860원으로 9원 차이입니다. 차이를 재현하려면 입력값뿐 아니라 원 단위 처리 순서도 같아야 합니다.

시간 입력과 돈의 표시를 분리하기

1시간 30분은 소수 시간 1.5이지 1.30이 아닙니다. 시간 입력을 분 단위로 받을 경우 총분을 60으로 나눠 계산하고, 화면에서 보기 좋게 표시하는 방식과 내부 계산 값을 구분해야 합니다. 월 합계를 만들 때 날짜별로 버릴지 합계에서 한 번 버릴지도 결과에 영향을 줍니다.

현재 코드의 버림 방식은 도구 동작의 설명이며 모든 사업장의 임금 처리 기준으로 권하는 규칙은 아닙니다. 회사 정산 기준과 법정 금액을 확인하고 차이를 대조하세요. 개발 검증에서는 0시간, 소수 시간, 월별 합계처럼 입력 유형을 달리해 동일한 산식으로 재현되는지 확인하는 것이 중요합니다.

자동 계산이 지원하지 않는 부분을 남기기

단일 1.5배 산식은 야간 구간, 휴일 8시간 초과, 고정 수당 차액, 사업장 규모, 근로시간제의 적용을 자동 판단하지 않습니다. 세금과 보험료를 반영한 실수령액도 아닙니다. 도구의 총액을 급여명세서의 최종 입금액과 바로 비교하면 서로 다른 금액을 비교하게 됩니다.

잔업정산기는 전제에 맞는 기록과 산술을 확인하는 보조 도구로 사용하세요. 업무 기록, 통상임금 기초, 가산 유형을 먼저 나눈 뒤 법정 기준과 실제 명세서를 대조하는 순서가 필요합니다. 계산식을 공개하고 예외를 설명하는 것은 숫자의 정밀함만큼 중요하며, 더 복잡한 근무는 별도 표와 공식 상담으로 확인해야 합니다.