유틸리티

단위 변환과 글로벌 급여 시스템의 통화 처리

다국적 기업에서 근무하면서 여러 나라 직원의 급여를 관리하는 시스템을 개발했다. 통화 단위가 다르고 환율도 변동하니 단순하지 않았다. 단위 변환기처럼 값을 변환하는 건 쉽지만, 금융에서는 정확도가 생명이다.

통화 코드 표준

통화는 ISO 4217 코드를 사용한다. KRW(원화), USD(달러), EUR(유로), JPY(엔화) 등이다. DB에 금액을 저장할 때 통화 코드를 함께 저장해야 한다.

{ amount: 5000000, currency: "KRW" }

cacaoio.kr/unit-converter에서 다양한 단위 변환을 해볼 수 있는데, 통화 변환은 환율 API가 필요하다.

환율 적용 시점

환율은 언제 기준으로 적용할지가 중요하다. 급여 지급일 기준, 근무월 평균, 확정일 기준 등 정책에 따라 다르다. 환율 변동이 크면 직원들이 불만을 가질 수 있으니 명확한 규정이 필요하다.

정밀도 처리

금융에서 부동소수점을 쓰면 안 된다. 0.1 + 0.2가 0.30000000000000004가 되는 문제가 있다. 정수로 저장하고 (센트, 전 단위) 표시할 때만 변환하거나, Decimal 라이브러리를 사용한다.

// 나쁜 예 0.1 + 0.2; // 0.30000000000000004

// 좋은 예 - 센트 단위로 처리 10 + 20 = 30; // /bin/bash.30

현지화 표시

같은 금액도 국가별로 표시 형식이 다르다. 한국은 1,000,000원, 미국은 ,000,000.00, 독일은 1.000.000,00 €. Intl.NumberFormat을 사용하면 로케일에 맞게 포맷팅된다.

new Intl.NumberFormat("ko-KR", { style: "currency", currency: "KRW" }).format(5000000); // ₩5,000,000

급여 비교

본사 기준 USD로 급여를 비교할 때, 단순 환율 변환보다 PPP(구매력평가)를 고려해야 실질적인 비교가 된다. 단위 변환처럼 단순 변환이 아니라 복잡한 경제 지표가 들어간다.

세금 처리

국가별로 세금 제도가 다르다. 해외 지사 직원의 급여를 본사에서 지급할 때, 이중과세 방지 협정 등을 고려해야 한다. 전문 세무사의 도움이 필요한 영역이다.

결론

글로벌 급여 시스템은 통화, 환율, 정밀도, 현지화까지 고려할 게 많다. 기본적인 단위 변환은 온라인 단위 변환기로 해볼 수 있다.