만약에 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
Posted by 빨강토끼
,