Programing/javascript

JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)

2025. 5. 27. 15:28
반응형

연관글

  • 2025.04.18 - [Programing/javascript] - 💰 숫자를 한글로 금액 단위로 표현
  • 2025.04.18 - [Programing/javascript] - 💻 숫자를 한글 숫자 표기로 변환
  • 2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)
  • 2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)
  • 2025.06.11 - [Programing] - 엑셀/스프레디시트에서 숫자를 한글로 표기하는 방법 총정리 (Excel to Hangul Conversion)

금액을 영어 단위로 표현하는 이유

"금액 변환" 기능은 전자 청구서, 금융 애플리케이션, 송장 시스템 등 다양한 곳에서 활용됩니다. 예를 들어, 1234567이라는 숫자를 "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"과 같은 형식으로 변환하는 것이 대표적입니다. 이 기능은 특히 사용자의 명확한 인식이 필요한 금융 및 계약서 UI에서 자주 사용됩니다.


자바스크립트로 금액을 영어로 변환하는 방법

숫자를 영어로 표현하는 방식은 다음과 같은 단계를 거칩니다:

1. "천 단위로 나누기"

큰 숫자는 천 단위로 쪼개서 처리합니다. 예: 1,234,567 → [1, 234, 567]

2. "단어 배열을 조합해 표현하기"

각 천 단위 블록을 영어로 변환한 후, 대응하는 단위를 붙입니다. 예: Thousand, Million, Billion 등

3. "특수 케이스 처리"

  • 0일 때는 "Zero"
  • 10~19는 예외 처리 (Teen 숫자)
  • 각 자리에서 0이 포함된 경우 생략 또는 특정 표현 생략 필요

자바스크립트 전체 코드 예제

function numberToWords(num) {
  if (num === 0) return "Zero";

  const below20 = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"];
  const tens = ["", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"];
  const thousands = ["", "Thousand", "Million", "Billion"];

  function helper(n) {
    if (n === 0) return "";
    else if (n < 20) return below20[n] + " ";
    else if (n < 100) return tens[Math.floor(n / 10)] + " " + helper(n % 10);
    else return below20[Math.floor(n / 100)] + " Hundred " + helper(n % 100);
  }

  let word = "";
  let i = 0;

  while (num > 0) {
    if (num % 1000 !== 0) {
      word = helper(num % 1000) + thousands[i] + " " + word;
    }
    num = Math.floor(num / 1000);
    i++;
  }

  return word.trim();
}

console.log(numberToWords(1234567));
// "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

코드 흐름 설명

  • "num % 1000"을 통해 천 단위로 숫자를 쪼개고
  • 각 조각에 대해 "helper" 함수를 실행해 단어로 변환한 후
  • "thousands" 배열을 참고해 해당 단위(Million, Thousand 등)를 덧붙입니다.

"단위별 출력"을 반복하면서 단어들을 조합해 전체 문장을 구성하게 됩니다.


특수 케이스 예시

console.log(numberToWords(0));
// "Zero"

console.log(numberToWords(1000000));
// "One Million"

console.log(numberToWords(101));
// "One Hundred One"

이처럼 입력 값에 따라 표현 방식이 유동적으로 달라지므로, 로직 내 예외 처리가 중요합니다.


시간 복잡도 및 성능 고려

이 알고리즘의 시간 복잡도는 O(log n)으로, 입력 숫자의 자릿수에 따라 연산량이 증가합니다. 하지만 일반적인 UI/UX 환경에서 사용하는 10억 이하 금액에 대해서는 성능상 큰 문제가 없습니다.


마무리

"단어 조합 방식"으로 구성된 금액 변환 로직은 숫자 형식 처리나 다국어 대응(i18n) 구현 시 매우 유용합니다. 이 기능은 사용자의 이해도를 높이고, 시각적으로 더 친절한 UI를 만드는 데 도움을 줍니다.

반응형

'Programing > javascript' 카테고리의 다른 글

JavaScript canvas로 이미지 리사이즈  (1) 2025.06.26
JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)  (0) 2025.05.27
JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)  (0) 2025.05.27
기수 정렬 (Radix Sort) 설명과 JavaScript 예제  (1) 2025.05.22
힙 정렬 (Heap Sort) 설명과 JavaScript 예제  (0) 2025.05.22
JavaScript 비교 연산자  (1) 2025.05.18
JavaScript 조건문  (0) 2025.05.18
JavaScript 반복문  (0) 2025.05.18
'Programing/javascript' 카테고리의 다른 글
  • JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)
  • JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)
  • 기수 정렬 (Radix Sort) 설명과 JavaScript 예제
  • 힙 정렬 (Heap Sort) 설명과 JavaScript 예제
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    읽고 싶은 책
    IT·컴퓨터
    블로그
    자바스크립트유틸
    IT블로그
    자바스크립트
    Java
    자바
    iT's MY LiFE
    기초
    php
    js패턴
    디자인패턴
    JavaScript
    jsp
    사고 싶은 책
    IT 관련
    위시리스트
    It
    SQL
Dongkkase
JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)
상단으로

티스토리툴바