格式化 金額數據

如何方法的向一個金額數據添加 分節符,不限於三位分節函數

如下是一個很好的實現方法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

相關文章
相關標籤/搜索