본문 바로가기
IT-개발,DB

[개발/asp.net] 금액, 숫자를 문자로 바꾸기

by SB리치퍼슨 2010. 12. 10.
쌈꼬쪼려 소백촌닭

금액, 숫자를 문자로 바꾸기

금액 형식의 숫자를 한글로 바꾸어 반환하는 메서드입니다.

문자열 형식의 숫자를 인수로 넘기는 경우에는
콤마(,)는 허용, 그 외 숫자형식이 아닌 문자는 에러메시지로 처리합니다.
소숫점이하의 수는 소숫점에서 반올림 하여 계산합니다.

public string NumberToHangul( double number)
{
    return  NumberToHangul( number.ToString() );
}

public string NumberToHangul( string strNumber)
{
    // 콤마(,)제거
    strNumber = strNumber.Replace(",","");

     // 문자열이 숫자형식인지 체크
    for( int i=0; i<strNumber.Length; i++)
    {
        if( !Char.IsNumber( strNumber, i) && strNumber[i] != '.')
            return "숫자형식이 아닙니다.";
    }

    // 소숫점 이하 숫자가 존재하면 반올림처리
    if( strNumber.IndexOf(".") >=0 )   
    {
        double tempNum = Convert.ToDouble( strNumber );
        strNumber = Convert.ToString( Math.Round( tempNum ) );
    }

    string[] arrayAmt = new string[]
    {"일", "이", "삼", "사", "오", "육", "칠", "팔", "구", "십"};

    string[] arraypos = new string[] {"", "십", "백", "천"};

    string[] arrayUnit = new string[]
    {"", "만", "억", "조", "경", "해", "자", "양", "구", "간", "정", "재", "극",
        "항하사", "아승기", "나유타", "불가사의", "무량대수"};

     int pos = strNumber.Length%4; //자리수
    int unit = strNumber.Length/4;

    string korNumber = String.Empty;
    int op = 0;

    for( int i=0; i<strNumber.Length; i++ )
    {
        if( pos==0 ) pos=4;
        int num = Convert.ToInt16( strNumber.Substring(i,1) );
        if( num > 0 )
        {
            korNumber += arrayAmt[ num-1 ];
            korNumber += arraypos[ pos-1 ];
            op=1;
        }
        if(pos == 1)
        {
            if( op == 1 ) korNumber += arrayUnit[ unit ];
            unit--; op = 0;
        }
        pos--;
    }
    return korNumber ;
}

반응형

댓글