小写金额转大写c++

CString GetBigMoney(double dMoney) { //这里没有对超出部份作异常,使用者要注意(现实中不会出现如此巨大的金额数) CString str_list; //大写列表"壹百零壹元叁角贰分" CString str_small2; //格式化后的金额小数 str_small2.Format(_T("%.2f"),dMoney);//101.32 int j = str_small2.GetLength(); //待转换两位小数字符串的长度 5位 if(j > 16) { return _T("出错!"); } wchar_t * char_small = str_small2.GetBuffer(); //格式化的小数转换成字符串"101.32" AddString(char_small,j,0,&str_list); if(_T("元零")==str_list.Mid(str_list.GetLength()-2)) str_list.Replace(_T("元零"),_T("元整")); if(_T("角零") == str_list.Mid(str_list.GetLength()-2)) str_list.Replace(_T("角零"),_T("角")); if(_T("元零")==str_list.Left(2)) str_list.Delete(0,2); str_list.Replace(_T("零元"),_T("元")); if(_T("元整") == str_list) str_list = _T("零元整"); return str_list; } bool AddString(wchar_t* wchar_small, int j, int current_pos, CString* str_list) { CString str_temp1[] = { _T("零"), _T("壹"), _T("贰"), _T("叁"), _T("肆"), _T("伍"), _T("陆"), _T("柒"), _T("捌"), _T("玖")}; CString str_temp2[] = { _T("分"), _T("角"), _T(""), _T("元"), _T("拾"), _T("佰"), _T("仟"), _T("万"), _T("拾"), _T("佰"), _T("仟"), _T("亿"), _T("拾"), _T("佰"), _T("仟"), _T("万")}; int i=current_pos;//当前位置 if(i < j) { CString single_num_str_temp1;// "1" int single_num1;// 1 CString single_str1; // "壹"... CString single_str2; // "分". single_num_str_temp1.Format(_T("%c"),wchar_small[i]); single_num1 = _wtoi(single_num_str_temp1);//当前位置的阿拉伯数字 if((0 == single_num1)&&(_T(".")!=single_num_str_temp1)) { //等于0并且前一位已经是零则 if(_T("零") == str_list->Right(1)) { if(12 == j-i) { *str_list = *str_list + _T("亿"); str_list->Replace(_T("零亿"),_T("亿")); } if(8 == j-i) { *str_list = *str_list + _T("万"); str_list->Replace(_T("零万"),_T("万")); } if(4 == j-i) { *str_list = *str_list + _T("元"); str_list->Replace(_T("零元"),_T("元")); } } else//等于0但前一位不是零 { if(12 == j-i) { *str_list = *str_list + _T("亿"); } else { if(8 == j-i) { *str_list = *str_list + _T("万"); } else { if(4 == j-i) { *str_list = *str_list + _T("元"); } else { if(3 != j-i) { *str_list = *str_list + _T("零"); } } } } } *str_list = *str_list + _T("零"); } else { //否则显示0 if(_T(".")==single_num_str_temp1) { single_str1.Format(_T("")); single_str2.Format(_T("%s"),str_temp2[j-i-1]); } else { single_str1.Format(_T("%s"),str_temp1[single_num1]); single_str2.Format(_T("%s"),str_temp2[j-i-1]); } *str_list = *str_list + single_str1 + single_str2; } i++; AddString(wchar_small,j,i,str_list);//函数嵌套 str_list->Replace(_T("零零"),_T("零")); str_list->Replace(_T("零亿"),_T("亿")); str_list->Replace(_T("零万"),_T("万")); str_list->Replace(_T("零千"),_T("千")); str_list->Replace(_T("亿万"),_T("亿")); return true; } else { return false; } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值