Programing/javascript

💻 숫자를 한글 숫자 표기로 변환

2025. 4. 18. 08:54
반응형

연관글

  • 2025.04.18 - [Programing/javascript] - 💰 숫자를 한글로 금액 단위로 표현
  • 2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)
  • 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)

일반적인 숫자(예: 123456789)를 사용자에게 출력할 때, "일억이천삼백사십오만육천칠백팔십구"처럼 한글 숫자 표기로 변환하는 기능은 전자결제, 세금계산서, 금융서비스 등에서 자주 사용됩니다. 


✅ 변환 목적

  • 숫자를 입력받아 한글 숫자로 읽는 형식으로 출력
  • 자리수에 따라 "십", "백", "천" 및 "만", "억", "조" 단위를 자동으로 붙임
  • 0은 생략
  • 예: 123456789 → 일억이천삼백사십오만육천칠백팔십구

💡 구현된 JavaScript 함수

function numberToHan(num) {
  const hanNum = ['', '일', '이', '삼', '사', '오', '육', '칠', '팔', '구'];
  const unit1 = ['', '십', '백', '천'];
  const unit4 = ['', '만', '억', '조', '경'];

  if (typeof num === 'string') {
    num = num.replace(/[^0-9]/g, '');
  }

  if (!num || isNaN(num)) return '';
  num = String(num);
  const reversed = num.split('').reverse().join('');
  const split4 = [];

  for (let i = 0; i < reversed.length; i += 4) {
    split4.push(reversed.substring(i, i + 4));
  }

  const result = [];

  for (let i = 0; i < split4.length; i++) {
    const chunk = split4[i].split('');
    const temp = [];

    for (let j = 0; j < chunk.length; j++) {
      const digit = parseInt(chunk[j]);
      if (digit > 0) {
        temp.unshift(hanNum[digit] + unit1[j]);
      }
    }

    if (temp.length > 0) {
      result.unshift(temp.join('') + unit4[i]);
    }
  }

  return result.join('');
}

🔍 사용 예시

numberToHan(123456789);        // "일억이천삼백사십오만육천칠백팔십구"
numberToHan("1,002,003,000");  // "일십억이백만삼천"
numberToHan("000123456");      // "십이만삼천사백오십육"
numberToHan("12억3천만원");    // "일십이억삼천만원" → 숫자 추출만 반영됨

🧠 동작 방식 요약

  1. 숫자를 뒤에서부터 4자리씩 나눕니다. (만 단위 단위)
  2. 각 블록을 1자리씩 읽어가며 십, 백, 천 단위를 붙입니다.
  3. 각 4자리 블록에 대해 "만", "억", "조" 등의 큰 단위를 추가합니다.
  4. 0은 건너뛰고 의미 있는 숫자만 읽어 붙입니다.

⚠️ 주의 사항 및 개선 포인트

  • "일십" → "십"처럼 불필요한 "일" 생략 기능은 아직 포함되지 않음
  • 소수점 지원 없음
  • "영"(0)을 명시적으로 표시하지 않음
  • 단위를 포함한 금액 표기(예: 일억삼천만원정) 형식으로 확장 가능

🧾 실사용 예시

  • 결제 금액을 한글로 표시: 견적서, 청구서, 세금계산서
  • 수기 입력 방지: "10000" → "일만원"
  • 전자문서 출력용 한글 숫자 변환

이 함수는 숫자의 한글 표현이 필요한 다양한 서비스에 유용하게 활용될 수 있습니다. 추후 원한다면 "일십" → "십" 같은 불필요한 접두어 제거 로직도 함께 구현할 수 있습니다.

반응형

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

자바스크립트 Constructor Pattern  (0) 2025.04.19
자바스크립트의 Behavioral 패턴: 객체 간의 소통을 설계하다  (0) 2025.04.19
자바스크립트의 Structural 패턴: 객체 구조의 유연함을 설계하다  (0) 2025.04.19
자바스크립트의 Creational 패턴: 객체 생성의 정석  (0) 2025.04.19
💰 숫자를 한글로 금액 단위로 표현  (0) 2025.04.18
📷 JavaScript로 이미지 리사이징 후 PHP로 업로드하는 방법  (1) 2025.04.16
🎂 자바스크립트로 나이 계산하는 3가지 방법  (0) 2025.04.16
JavaScript로 URL 파라미터 업데이트하는 방법  (0) 2025.04.16
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트의 Structural 패턴: 객체 구조의 유연함을 설계하다
  • 자바스크립트의 Creational 패턴: 객체 생성의 정석
  • 💰 숫자를 한글로 금액 단위로 표현
  • 📷 JavaScript로 이미지 리사이징 후 PHP로 업로드하는 방법
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블로그
    jsp
    위시리스트
    블로그
    IT 관련
    It
    사고 싶은 책
    읽고 싶은 책
    js패턴
    디자인패턴
    Java
    기초
    SQL
    자바스크립트유틸
    JavaScript
    자바스크립트
    iT's MY LiFE
    php
Dongkkase
💻 숫자를 한글 숫자 표기로 변환
상단으로

티스토리툴바