金额:数字转汉字

来源:互联网 发布:银客网网络理财 编辑:程序博客网 时间:2024/05/20 00:14
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("玖")};   //这样可能会有数字误差,double只有15位有效数字,这里只有13 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((LPCTSTR)szNum.Mid(i,1));   if(iNum == 0)   {   iAddZero++;   }   else   {   if(iAddZero>0)   szChMoney+=_T("零");   szChMoney+=hzNum[iNum];   iAddZero=0;   }//该位不为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("整");CString Temp = szChMoney;   CString Temp1 = Temp.Left(2);   CString Temp2 = Temp.Left(4);   if((Temp1 == _T("壹")) && (Temp2 == _T("壹拾")))//满足去除条件   szChMoney.Delete(0,2);return   szChMoney;  }

0 0
原创粉丝点击