숫자를 한글 숫자로 변환

가끔 견적서에 한글 숫자를 써야할 때가 있다.

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* [num2han 숫자를 한글로 변환]
* @param {[integer]} num [숫자]
* @return {[string]} [한글 숫자]
* @author http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=14981
*/
var num2han = function (num) {
var i,
j = 0,
k = 0;
var han1 = ['', '일', '이', '삼', '사', '오', '육', '칠', '팔', '구'];
var han2 = ['', '만', '억', '조', '경', '해', '시', '양', '구', '간'];
var han3 = ['', '십', '백', '천'];
var result = '';
var hangul = String(num);
var pm = ''; // 부호
var str = [],
str2 = '';
var strTmp = [];

if (Number(num) === 0) {
return '영';
}

if (hangul.substring(0, 1) === '-') {
pm = '마이너스 ';
hangul = hangul.substring(1, hangul.length);
}

if (hangul.length > han2.length * 4) {
return 'too much number';
}

for (i = hangul.length; i > 0; i = i - 4) {
str[j] = hangul.substring(i - 4, i);

for (k = str[j].length; k > 0; k--) {
strTmp[k] = str[j].substring(k - 1, k) ? str[j].substring(k - 1, k) : '';
strTmp[k] = han1[parseInt(strTmp[k])];

if (strTmp[k]) {
strTmp[k] += han3[str[j].length - k];
}

str2 = strTmp[k] + str2;
}

str[j] = str2;

if (str[j]) {
result = str[j] + han2[j] + result;
}

// 4자리마다 한칸씩 띄고 보여준다.
//result = (str[j])? " "+str[j]+han2[j]+result : " " + result;
j++;
str2 = '';
}

return pm + result;
};

설명

숫자를 파라미터로 보내 사용하면 변환된 한글 숫자가 리턴된다.
출처는 소스상에 남겼다. 해당 스크립트를 문법에 맞게 조금 변경했다.