반응형
연관글
- 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천만원"); // "일십이억삼천만원" → 숫자 추출만 반영됨
🧠 동작 방식 요약
- 숫자를 뒤에서부터 4자리씩 나눕니다. (만 단위 단위)
- 각 블록을 1자리씩 읽어가며 십, 백, 천 단위를 붙입니다.
- 각 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 |