만약에 123456789 라는 숫자를 123,456,789 라는 식으로 표현하고 싶다면
사용할수있는 API 함수가 바로 GetNumberFormat 입니다.
네이버등을 통해서 검색해보면 사용법을 알수가 있는데
무작정 사용하는 것 보다는 좀더 옵션에 대하여 알아야 될것 같아서 정리해봅니다.
void InsertComma(double parm_num, char parm_buffer[])
{
CString str;
str.Format("%f", parm_num);
NUMBERFMT fmt = {0, 0, 3, ".", ",", 1};
// GetNumberFormat의 인자는 LOCALE_SYSTEM_DEFAULT, 플래그, 문자열 숫자, 문자열 포맷,
// 변환된 문자열 숫자, 버퍼 사이즈이다.
::GetNumberFormat(NULL, NULL, str, &fmt, parm_buffer, strlen(parm_num));
}
소스출처 :
http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=235&page=5
NUMBERFMT 의 구조는 아래와 같습니다.
Type NUMBERFMT
NumDigits As Long
LeadingZero As Long
Grouping As Long
lpDecimalSep As String
lpThousandSep As String
NegativeOrder >As Long
End Type
NumDigits
: 소숫점이하를 표시할 자릿수
LeadingZero
: 만약에 0라면 NumDigits 에서 선언한 자리수에 0 을 채워넣지않고 만일 0 이외의 값이라면
0을 채워넣는다. (예를 들어 NumDigits 가 3이고 숫자가 1.23 이라면 그리고 LeadingZero 가
0이라면 1.23 이라고 변환 될것이고 만일 LeadingZero 가 0 이외의 값이라면 1.230 이라고
변환 될것임)
Grouping
: 구분할 단위값을 정의합니다. 일반적으로 3을 사용하고 1,234,567 라고 변환된다. 0~9 까지 가능하다.
lpDecimalSep
: 소숫점을 표현할 character 를 정의한다.
lpThousandSep
: 단위 구분자를 표현할 character 를 정의한다.
NegativeOrder
: 음수값을 변환하는 방법을 정의한다.
예) -11.1
0 일 경우 11.1
1 일 경우 -11.1
2 일 경우 - 11.1 ( - 다음에 space 를 삽입한다.)
3 일 경우 11.1-
4 일 경우 11.1 - ( - 전에 space 를 삽입한다.)
참조 :
http://www.codebible.com/APIGuide/ref/numberfmt.asp