📄 numtohan.cpp
字号:
// NumToHan.cpp: implementation of the CNumToHan class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "NumToHan.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CNumToHan::CNumToHan()
{
}
CNumToHan::~CNumToHan()
{
}
CString CNumToHan::ChangNum(int num)
{
if(num<0||num>9)return "错";
CString str;
str.Format("%d",num);
CString s="0123456789";
CString h[10]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
return h[s.Find(str,0)];
}
CString CNumToHan::Chang(CString num)
{
CString str,str1;
CString m_cUint[16]={"毫","厘","分","角","元","拾","佰","仟","万",
"拾","佰","仟","亿","拾","佰","仟"};
int m_iIn;
int m_iLoc;//小数点位置
int m_iZero=0;
bool m_bZeroEnd=false;
if(num.Find(".",0)==-1)
m_iLoc=num.GetLength();
else
m_iLoc=num.Find(".",0);
for(int i=0;i<num.GetLength();i++)
{
if(num.GetAt(i)=='.')continue;
if(num.GetAt(i)=='0')
{
if(i==0)continue;
m_iZero++;
if(num.GetLength()==(i+1))
m_bZeroEnd=true;
}
else
if(m_iZero>0)m_bZeroEnd=true;
str=num.GetAt(i);
m_iIn=atoi(str);
if(m_iZero<=0||m_bZeroEnd)
{
if(m_iZero>0&&m_iIn>0){str1+="零";m_iZero=0;m_bZeroEnd=false;}
str1+=ChangNum(m_iIn);
if(m_iZero>0&&m_iIn==0){str1=str1.Left(str1.GetLength()-2);m_iZero=0;}
str1+=m_cUint[m_iLoc+3];
}
if((m_iLoc==9||m_iLoc==5)&&m_iZero>0)
{
bool m_b=true;
if((str1.Right(2)=="亿"&&m_cUint[m_iLoc+3]=="万"))
m_b=false;
if(m_b)str1+=m_cUint[m_iLoc+3];
m_iZero=0;
}
m_iLoc--;
}
return str1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -