首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 數字轉中文大寫金額:完整函數實現(含分角元萬億)

     編輯:程式設計綜合問答

輸入 double 金額,輸出「壹佰貳拾叁元整」等格式。

CString ChineseCapitalMoney(double Num) {
    CString szChMoney, szNum;
    int iLen, iNum, iAddZero = 0;
    TCHAR* hzUnit[18] = {_T("分"),_T("角"),_T("元"),_T("拾"),_T("佰"),_T("仟"),
                         _T("萬"),_T("拾"),_T("佰"),_T("仟"),_T("億"),
                         _T("拾"),_T("佰"),_T("仟"),_T("萬"),_T("拾"),_T("佰"),_T("仟")};
    TCHAR* hzNum[10] = {_T("零"),_T("壹"),_T("貳"),_T("參"),_T("肆"),
                        _T("伍"),_T("陸"),_T("柒"),_T("捌"),_T("玖")};
    szNum.Format(_T("%18.0f"), Num * 100); // 轉分為整數
    szNum.TrimLeft();
    iLen = szNum.GetLength();
    if (iLen > 15 || iLen == 0 || Num < 0) return _T("");
    for (int i = 0; i < iLen; i++) {
        iNum = _ttoi(szNum.Mid(i, 1));
        if (iNum == 0) iAddZero++;
        else {
            if (iAddZero > 0) szChMoney += _T("零");
            szChMoney += hzNum[iNum];
            iAddZero = 0;
        }
        if (iNum != 0 || iLen - i == 3 || iLen - i == 11 || ((iLen - i + 1) % 8 == 0 && iAddZero < 4))
            szChMoney += hzUnit[iLen - i - 1];
    }
    if (szNum.Right(2) == _T("00")) szChMoney += _T("整");
    return szChMoney;
}

支援至仟萬億,處理連續零、末尾「整」字,適合財務系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved