可能是最简洁明了的数字金额中文大写函数

//输入数字型金额,返回中文大写金额

CString toChineseCapitalMoney(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); //这样可能会有数字误差,double只有15位有效数字,这里只有13
 szNum.TrimLeft();
 iLen=szNum.GetLength();

 if(iLen>15 || iLen==0 || Num<0)return ""; //数据错误返回

 for(int i=0;i<iLen;i++){
  iNum=_ttoi((LPCTSTR)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)) //该位不为0||元位||亿位||万位
   szChMoney+=hzUnit[iLen-i-1];
 }

 if(szNum.Right(2)==_T("00")) szChMoney+=_T("整");
 return szChMoney;
}

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

格利高里

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值