VC中把数字转换为人民币金额大写的简单算法实现2015-02-20
void CNumberToRMBDlg::OnButton1() {// TODO: Add your control notification handler code hereUpdateData(TRUE); int pos = m_szNumber.Find(_T(".")); CString szInteger, szFloat;if (pos != -1){szInteger = m_szNumber.Left(pos);szFloat = m_szNumber.Mid(pos+1);if (szFloat.GetLength() > 2){szFloat = szFloat.Left(2);}}else{szInteger = m_szNumber;} CString szNumberSeed = _T("零壹贰叁肆伍陆柒捌玖");//CString szRMBSeed = _T("元拾佰仟万拾佰仟亿拾佰仟万");LPCTSTR lpInteger = (LPCTSTR)szInteger; CString szRMB = _T("");int iCount = 0;for (int i= szInteger.GetLength() - 1; i > -1; i--){char cNumber = lpInteger[i];int nNumber = atoi(&cNumber);szRMB = szNumberSeed.Mid(nNumber * 2, 2) + szRMBSeed.Mid(iCount * 2,2) + szRMB;iCount++;} CString szRMBFloat = _T("");LPCTSTR lpFloat = (LPCTSTR)szFloat;if (szFloat.GetLength() > 0){char cNumber = lpFloat[0];int nNumber = atoi(&cNumber);szRMB += szNumberSeed.Mid(nNumber * 2, 2) + _T("角");} if (szFloat.GetLength() > 1){char cNumber = lpFloat[1];int nNumber = atoi(&cNumber);szRMB += szNumberSeed.Mid(nNumber * 2, 2) + _T("分");} m_szRMB = szRMB; UpdateData(FALSE);}
01.void CNumberToRMBDlg::DoDataExchange(CDataExchange* pDX)
02.{
03.CDialog::DoDataExchange(pDX);
04.//{{AFX_DATA_MAP(CNumberToRMBDlg)
05.DDX_Text(pDX, IDC_EDIT_NUMBER, m_szNumber);
06.DDX_Text(pDX, IDC_EDIT_RMB, m_szRMB);
07.//}}AFX_DATA_MAP
08.}
From:csdn博客 微wx笑