GetNumberFormatA是kernel32.dll用来格式化输出数字的一个api函数。
https://docs.microsoft.com/zh-tw/windows/win32/api/winnls/nf-winnls-getnumberformata
GetNumberFormatA函数原型:
int GetNumberFormatA( LCID Locale, DWORD dwFlags, LPCSTR lpValue, const NUMBERFMTA *lpFormat, LPSTR lpNumberStr, int cchNumber );
int GetNumberFormat(
LCID Locale, // 语言
DWORD dwFlags, // 如果lpFormat不为NULL,则dwFlags必须为0
LPCTSTR lpValue, // 输入的数字字符串
CONST NUMBERFMT *lpFormat, // 格式信息
LPTSTR lpNumberStr, // 输出缓冲区
int cchNumber // 输出缓冲区的大小
);
易语言API
.版本 2 .DLL命令 取格式化数字_, 整数型, "kernel32.dll", "GetNumberFormatA" .参数 地方ID, 整数型, , Locale .参数 标志, 整数型, , dwFlags .参数 值, 文本型, , lpValue .参数 格式化结构, 数值格式化_, , lpFormat .参数 缓冲区文本, 文本型, , lpNumberStr .参数 缓冲区文本长度, 整数型, , cchNumber
struct _numberfmtA 数据类型
typedef struct _numberfmtA { UINT NumDigits; UINT LeadingZero; UINT Grouping; LPSTR lpDecimalSep; LPSTR lpThousandSep; UINT NegativeOrder; } NUMBERFMTA, *LPNUMBERFMTA;
typedef struct _numberfmt {
UINT NumDigits; //小数位个数
UINT LeadingZero; //小数点的前面是否前置0
UINT Grouping; //整数位几个可以打包为一组
LPTSTR lpDecimalSep; //小数分隔符,一般为”.”
LPTSTR lpThousandSep; //千位分隔符,一般为”,”
UINT NegativeOrder; //是否显示负数
} NUMBERFMT, *LPNUMBERFMT;
数值格式化数据类型
.版本 2 .数据类型 数值格式化_, , NUMBERFMT .成员 小数位数, 整数型, , , NumDigits .成员 是否使用0, 整数型, , , LeadingZero .成员 组大小, 整数型, , , Grouping .成员 小数点符号, 文本型, , , lpDecimalSep .成员 组分隔符号, 文本型, , , lpThousandSep .成员 负数模式, 整数型, , , NegativeOrder
易语言调用
.版本 2 .程序集 窗口程序集_启动窗口 .子程序 _按钮_数值格式化_被单击 .局部变量 局部_缓区, 文本型 .局部变量 局部_数值格式化, 数值格式化_ 局部_缓区 = 取重复文本 (255, “0”) 局部_数值格式化.小数位数 = 4 局部_数值格式化.组大小 = 3 局部_数值格式化.小数点符号 = “.” 局部_数值格式化.组分隔符号 = “,” 局部_数值格式化.负数模式 = 1 取格式化数字_ (0, 0, “300243.23”, 局部_数值格式化, 局部_缓区, 取文本长度 (局部_缓区)) 编辑框_运行结果.内容 = 局部_缓区