안녕하세요 만해입니다.
제가 올려놓은 숫자를 한글 금액으로 치환하는 변수를 조금 바꿔봤습니다.
지난달 오프때 페페루님께서 애기해준 방식으로 해봤는데요
괘않네요
지난번꺼하고 속도 비교는 아직 못 해봤는데
조금 나을거라 생각합니다.
참 그리고요 IF문을 그냥 간단히 3항 연산자로 고쳤습니다.
도움이 됐어면 하네요 그럼 이만~
ps.~ 저도 언젠간 좋은 Tip을 올릴수 있는 고수가 되길 바라며~ 넘 허접~
AnsiString TForm1::NumberToHangul(AnsiString Data)
{
AnsiString Digit[5]={"","천","백","십",""}; // 여기는 4자리 이내의 자릿수
AnsiString Carry[6] = {"원","만","억","조","경","해"}; // 여기는 자릿수 들어 가고요
AnsiString Number[10] = {"","일","이","삼","사","오","육","칠","팔","구"}; //각각의 숫자
AnsiString OutData="";
AnsiString SData="";
for ( ; (Data.Length() %4) ;)
Data = "0" + Data; // 4배수 만큼 자릿수가 안되면 4배수 만큼 앞에다 0을 넣습니다.
for (int i=0; Data.Length() >= 4 ;i++ )
{
AnsiString temp = Data.SubString(Data.Length()-3,4);
Data = Data.Delete(Data.Length()-3,4);
for ( int j = 1 ; j < 5 ; j++ )
{
(temp[j] == '0') ? //temp[j] 가 0 인지 비교
OutData = OutData + Number[StrToInt(temp[j])] : // temp[j] 가 0이면
OutData = OutData + Number[StrToInt(temp[j])]+ Digit[j]; // temp[j] 가 0이 아니면
}
(OutData == "") ? // OutData가 공백인지 비교
SData = OutData + SData : // OutData가 공백이면
SData = OutData + Carry[i] + SData; // OutData가 공백이 아니면
OutData = ""; //OutData 초기화
}
return SData;
}
|