數值字元的格式化

2021-04-07 13:36:55 字數 2015 閱讀 2982

記得有朋友在csdn裡問如何格式化乙個數值字串,比如"457354745",格式化成"457,354,745.00"。其中有很多朋友給出了自己的解析函式。其實win32 中有現在的api可以解決這個問題。這個api函式就是:

int getnumberformat(

lcid

locale

,                     // locale

dword

dwflags

,                 // options

lpctstr

lpvalue

,                // input number string

const numberfmt

*lpformat

,  // formatting information

lptstr

lpnumberstr

,            // output buffer

intcchnumber

// size of output buffer

);locale:

數值字元的本地格式化。有兩個值:

locale_system_default

default system locale.

locale_user_default

default user locale

dwflags:可以控制函式的行為。如果lpformat為null,那這個引數必須設定為null。

如果lpformat為null,則可以設定這個引數為locale_nouseroverride來呼叫系統預設的數值字元格式化。

比如:char szbuf[100];

getbumberformat(locale_user_default,

locale_nouseroverride,

"57684347",

0,szbuf,100);

結果szbuf返回值"57,684,347.00"

lpformat

:指向numberfmt

結構的指標。下面再詳細解釋.

lpnumberstr

:指標乙個字元緩衝區,返回已經格式化好的字元。

cchnumber

:lpnumberstr

指向的字元緩衝區的大小,以字元計算。

現在來詳細的介紹一下

numberfmt結構的成員:

typedef struct _numberfmt numberfmt, *lpnumberfmt;

numdigits

:小數點的個數

leadingzero

:前導零。"0001"的前三個零就是前導零.

grouping

:幾個數作為一組。比如"54,678"是三個為一組隔開;"45,67896"是五個為一組...

lpdecimalsep

:指向乙個null結束的字串,表示小數和整數部分以什麼符號串隔開。

lpthousandsep

:指向乙個null結束的字串,表示組與組之間以為什麼字串分開。比如上面是逗號。

negativeorde

r:負數的模式。有四種,一般設定為1。

舉個例子:

char sznum[ ] = "785686754";

char szbuf[100];

numberfmt nf;

nf.numdigits = 2;

nf.leadingzero = false;

nf.grouping = 4;

nf.lpthousandsep = ".";

nf.negativeorder = 1;

getnumberformat(locale_user_default,

0,sznum,

&nf,

szbuf,

100);

結果szbuf =="7,8568,6754.00"

更詳細的說明請參見msdn,太晚了,明天要上班,睡了先。

格式化,強調 數值格式化

聚合函式返回的的數值型別的值有個特點就是沒有被格式化。通過前面的帶 sum 聚合函式的示例,我們可以看到這一點 注意合計值 命令,或者在物件檢視器中選中 displayformat 屬性。在上節的示例中,格式化操作是針對一物件或物件內的表示式,在物件內僅有乙個表示式時它還能正常工作,不過當物件內不有...

C ToString 格式化數值

格式字串採用以下形式 axx,其中 a 為格式說明符,指定格式化型別,xx 為精度說明符,控制格式化輸出的有效位數或小數字數。格式說明符 說明 示例 輸出 c 貨幣 2.5.tostring c 2.50 d 十進位制數 25.tostring d5 00025 e 科學型 25000.tostri...

ToString 格式化數值

格式化數值 有時,我們可能需要將數值以一定的格式來呈現,就需要對數值進行格式化。我們使用格式字串指定格式。格式字串採用以下形式 axx,其中 a 為格式說明符,指定格式化型別,xx 為精度說明符,控制格式化輸出的有效位數或小數字數。格式說明符 說明示例輸出c 貨幣2.5.tostring c2 2....