在网上看到,关于这个函数的资料极少,所以做个说明
int GetNumberFormat(
LCID Locale, // 语言
DWORD dwFlags, // 如果lpFormat不为NULL,则dwFlags必须为0
LPCTSTR lpValue, // 输入的数字字符串
CONST NUMBERFMT *lpFormat, // 格式信息
LPTSTR lpNumberStr, // 输出缓冲区
int cchNumber // 输出缓冲区的大小
);
typedef struct _numberfmt {
UINT NumDigits; //小数位个数
UINT LeadingZero; //小数点的前面是否前置0
UINT Grouping; //整数位几个可以打包为一组
LPTSTR lpDecimalSep; //小数分隔符,一般为”.”
LPTSTR lpThousandSep; //千位分隔符,一般为”,”
UINT NegativeOrder; //是否显示负数
} NUMBERFMT, *LPNUMBERFMT;
示例
#include <Windows.h>
#include <windowsx.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR szCmdLine, int iCmdShow)
{
NUMBERFMT nf;
TCHAR szBuf[100];
//int lNum = 0.1234567;
TCHAR szNum[100]=TEXT("-0.1234567");
//wsprintf(szNum, TEXT("%f"), lNum);
nf.Grouping = 3;
nf.LeadingZero = TRUE;
nf.lpDecimalSep = TEXT(".");
nf.lpThousandSep = TEXT(",");
nf.NegativeOrder = TRUE;
nf.NumDigits = 6;
GetNumberFormat(LOCALE_SYSTEM_DEFAULT, 0, szNum, &nf, szBuf, 100);
MessageBox(NULL, szBuf, TEXT("error"), MB_OK);
return 0;
}
如果修改nf.NegativeOrder = FALSE
如果修改nf.LeadingZero = FALSE
如果修改nf.lpDecimalSep = TEXT(“#”);
那么小数点就会替换成#
好了还是换成”.”吧
换成整数12345678