개발팁2016. 8. 16. 10:02

숫자를 한글로 표시하는 방법이다.

은행사이트에서 이체 할때 보면, 숫자로 입력하면, 그 옆에 한글로 표시되는걸 봤을것이다.

 

123,000 => 일십이만삼천 원

 

예제는 자바스크립트 코드로 작성하였지만, 소스가 단순해서, 사용하는 언어로 포팅하여 사용하면 된다.

 

우선, 0 ~ 9 까지의 숫자를 한글로 정의해보자.

 

var arrNumberWord = new Array("","일","이","삼","사","오","육","칠","팔","구");


 

0은 블랭크로 두고, 각각의 숫자에 대해서, 배열로 정의하면, 배열인덱스로 바로 한글명으로 치환이 가능하다.

 

arrNumberWord[9] => 구

arrNumberWord[5] => 오

 

그다음, 4자리마다 끊어지는, 단위를 만들어보자.

영어에서는 3자리로 끊어지기 때문에, 콤마위치가 3자리에 와서, 한눈에 숫자를 파악하기 편한데,

우리나라는 4자리마다 끊어지는데, 콤마위치를 3자리에 뒤서, 영~ 좋지 않다.

 

var arrDigitWord = new  Array("","십","백","천");

 

1, 10, 100, 1000

1의자리는 치환이 없고, 각각, 십, 백, 천 이 된다.

7000 => 위의 arrNumberWord 배열로 칠로 바꾸고, 뒤에 000 => 길이가 3이기 때문에, 배열 인덱스 3으로 가져오면, 천으로 바뀌어, 칠천 이 된다.

 

이렇게, 각 자리수를 4로 나눈 나머지 를 처리하면된다.

 

 

마지막으로는, 4자리마다 세는 단위를 넣어보자.

만, 억, 조 가 해당된다.

10,000 => 만, 100,000,000 => 억

 

var arrManWord = new  Array("","만","억", "조");

 

이 arrManWord 는 자리수를 4로 나눈 몫으로 처리하면 된다.

10,000 의 경우 1을 제외하고, 0000 자리수가 4개이기 때문에, 4로 나누면 1이 나오고, 나머지가 0 인경우,

arrManWord[4로 나눈 정수값] = 억 이 된다.

 

 

<html>
<head>
<script>

      // 1 ~ 9 한글 표시
      var arrNumberWord = new Array("","일","이","삼","사","오","육","칠","팔","구");
      // 10, 100, 100 자리수 한글 표시
      var arrDigitWord = new  Array("","십","백","천");
      // 만단위 한글 표시
      var arrManWord = new  Array("","만","억", "조");



      // Copyright 헝그리개발자(https://bemeal2.tistory.com)
      // 소스는 자유롭게 사용가능합니다. Copyright 는 삭제하지 마세요.
      function fn_change_hangul_money(txt_id)
      {
            var num_value = txt_id.value;
            var num_length = num_value.length;



            if(isNaN(num_value) == true)
                  return;



            var han_value = "";
            var man_count = 0;      // 만단위 0이 아닌 금액 카운트.



            for(i=0; i < num_value.length; i++)
            {
                  // 1단위의 문자로 표시.. (0은 제외)
                  var strTextWord = arrNumberWord[num_value.charAt(i)];



                  // 0이 아닌경우만, 십/백/천 표시
                  if(strTextWord != "")
                  {
                        man_count++;
                        strTextWord += arrDigitWord[(num_length - (i+1)) % 4];
                  }



                  // 만단위마다 표시 (0인경우에도 만단위는 표시한다)
                  if(man_count != 0 && (num_length - (i+1)) % 4 == 0)
                  {
                        man_count = 0;
                        strTextWord = strTextWord + arrManWord[(num_length - (i+1)) / 4];
                  }



                  han_value += strTextWord;
            }

            if(num_value != 0)
                  han_value = "금 " + han_value + " 원";



            document.all.han_money.innerText = han_value;
      }


</script>
</head>

<body>
<form>
<span class="han_money" id="han_money">금액표시</span>
<br>
<input type="text" id="txt_money" maxlength="12" onkeyup="fn_change_hangul_money(this);">

</form>

</body>

</html>

 

 

간단하게 구현해본 자바스크립트 소스이다.

textbox 에 입력된 숫자를 받아서, 한글로 표시해준다.

 

 

 

Posted by 헝개