개발 창고/Web

[Javascript] 숫자 한글로 표기하기

로이제로 2020. 7. 26. 17:02
반응형

흔히 은행권에서 많이 볼 수 있는데요 금액을 숫자로 표기하다 보면 금액이 헷갈릴 수 있기 때문에 편의를 위해 제공되는 기능으로 금액을 한글로 표기해주는 경우가 많죠

 

/**
* @param val 가격정보 (Type. Number)
*/
function _fmtNumberKor(val){
    var numKor = new Array("", "일", "이", "삼", "사","오","육","칠","팔","구","십");                                  // 숫자 문자
    var danKor = new Array("", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천");    // 만위 문자열
    var result = "";
    
    if(val && !isNaN(val)){
        // CASE: 금액이 공란/NULL/문자가 포함된 경우가 아닌 경우에만 처리
        
        for(var i = 0; i < val.length; i++) {
            var str = "";
            var num = numKor[val.charAt(val.length - (i+1))];
            if(num != "")   str += num + danKor[i];    // 숫자가 0인 경우 텍스트를 표현하지 않음
            switch(i){
                case 4:str += "만";break;     // 4자리인 경우 '만'을 붙여줌 ex) 10000 -> 일만
                case 8:str += "억";break;     // 8자리인 경우 '억'을 붙여줌 ex) 100000000 -> 일억
                case 12:str += "조";break;    // 12자리인 경우 '조'를 붙여줌 ex) 1000000000000 -> 일조
            }

            result = str + result;
        }
        
        // Step. 불필요 단위 제거
        if(result.indexOf("억만") > 0)    result = result.replace("억만", "억");
        if(result.indexOf("조만") > 0)    result = result.replace("조만", "조");
        if(result.indexOf("조억") > 0)    result = result.replace("조억", "조");
        
        
        
        result = result + "원";
    }
    
    return result ;
}

함수 선언 후 실행 결과

JSFiddle에서 좌측 하단에 상단의 소스를 넣고 맨 아래에

 

console.log(_fmtNumberKor("1234"));

 

를 넣으면

우측 하단의 콘솔 창에

 

"일천이백삼십사원"

 

이 출력됨을 확인할 수 있습니다.

 


(추가) 2022.11.12

기존 코드에 만 단위의 금액 또는 억 단위의 금액 표기가 없는 경우에도 만 / 억이 표기되는 오류 수정

ex) 100000000 ► 일억만원 ► 일억원

ex) 1000000000000 ► 일조억만원 ► 일조원

 

// Step. 불필요 단위 제거
if(result.indexOf("억만") > 0)    result = result.replace("억만", "억");
if(result.indexOf("조만") > 0)    result = result.replace("조만", "조");
if(result.indexOf("조억") > 0)    result = result.replace("조억", "조");
반응형