如何方法的向一個金額數據添加 分節符,不限於三位分節函數
如下是一個很好的實現方法code
int TMoneyFMT(double dbl, char *fmt, char *str) { int iRet = 1; int mLen = strlen(fmt); char *s, *d, *p; char temp[31]; sprintf(temp, "%.2lf", dbl); /* 將 dbl 轉化爲基本字符串 */ memset(str, ' ', mLen); str[mLen] = 0x0; d = temp + strlen(temp) - 1; /* 指向 dbl 字符串的結束位置 */ s = fmt + mLen - 1; /* 指向模板串的結束位置 */ p = str + mLen - 1; /* 指向目標串的結束位置 */ for( ; s > fmt-1 && iRet ; s--, p-- ) { switch( *s ) /* 對格式化串中數據進行分析 */ { case '9' : *p = *d --; if(d == temp-1) iRet = 0; break; case '0' : if(d > temp-1 ) *p = *d --; else *p = '0'; /* 按照模板要求, 添加前導 '0' */ break; case '.' : if( *d=='.') *p = *d --; break; default : *p = *s ; break; } } /* 去除 str 前面多餘的空格 */ s = d = str; while( *s ) { if( *s != ' ') *d ++ = *s ; s ++ ; } *d = 0x0 ; return d-str ; }
程序調用方法字符串
TMoneyFMT(jioyje, "999,999,999,990.99", sJYJE); // 格式化一個交易金額數據 TMoneyFMT(jioyje, "9999,9999,9990.99", sJYJE); // 一樣支持 4 位分節,數據更加容易讀出
這是一個格式化處理函數,使用 ‘0’ 標誌,則意味着輸入數據小於 1.00 時候,能夠獲得 0.XX 的輸出效果it