把数字换成大写钱币的函数

public static void FloatTransform(string strNum,ref string result)
{
string strInt;
string strFloat;
strInt=strNum.Substring(0,strNum.IndexOf(".",0));//整数部分的值
strFloat=strNum.Substring((strNum.IndexOf(".",0)+1),(strNum.Length-strNum.IndexOf(".",0)-1));//小数部分的值
//MessageBox.Show(strInt);
//MessageBox.Show(strFloat);
//return;
int numLen=strInt.Length;
string dx="零壹贰叁肆伍陆柒捌玖";
string ws="分角元拾佰仟万拾佰仟亿拾佰仟";
//MessageBox.Show(ws.Length.ToString());
result=null;
int i=0,w=0;
int q=0;
bool ling=true;
//计算整数的大写!
while(i<numLen)
{
if(strInt.Substring(i,1)!="0")
{
//MessageBox.Show(strNum.Substring(i,1));
result=result+dx.Substring(Convert.ToInt32(strInt.Substring(i,1)),1);
result=result+ws.Substring((numLen-i)+1,1);
ling=false;
i++;
}
else if(ling==false&&strInt.Substring(i,1)=="0")
{
if((numLen-i+1)>10)//判断是否过亿
{
w=0;
for(q=11;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q+1,1));
}
if(w==0)
{
result=result+"亿";
i=numLen-9;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>6)//判断是否是万以上
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}

else if((numLen-i+1)>3)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
else if((numLen-i+1)>0)
{
w=0;
for(q=1;q<(numLen-i+1);q++)
{
w=w+Convert.ToInt32(strInt.Substring(numLen-q,1));
}
if(w==0)
{
result=result+"整";
i=numLen+1;
}
else
{
result=result+"零";
i=i+1;
ling=true;
}
}
}
else if(strInt.Substring(i,1)=="0"&&ling==true)
{
i=i+1;
}

}
//计算小数部分的大写!

int numLenFlt=strFloat.Length;
if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)=="0")
{
result=result+"整";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)=="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角";
}
else if(strFloat.Substring(0,1)=="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}
else if(strFloat.Substring(0,1)!="0"&&strFloat.Substring(1,1)!="0")
{
result=result+dx.Substring(Convert.ToInt32(strFloat.Substring(0,1)),1)+"角"+dx.Substring(Convert.ToInt32(strFloat.Substring(1,1)),1)+"分";
}

}


只对六位数字作转换
public string TransValues(string MoneyValues)
{
//
// TODO: 在此处添加构造函数逻辑
//
int MoneyValues_len;//小写钱的长度
string MoneyTranStr;//转换后的大写钱
string MoneyStr;//经过转换后的大写钱字串
string tempStr;

MoneyValues_len=MoneyValues.Length;

for(int i=0;i<MoneyValues_len;i++) //将阿拉伯数字转换成汉字
{
string stra=MoneyValues.Substring(i,1);
switch(stra)
{
case "1":
MoneyTranStr="壹";
break;
case "2":
MoneyTranStr="贰";
break;
case "3":
MoneyTranStr="叁";
break;
case "4":
MoneyTranStr="肆";
break;
case "5":
MoneyTranStr="伍";
break;
case "6":
MoneyTranStr="陆";
break;
case "7":
MoneyTranStr="柒";
break;
case "8":
MoneyTranStr="捌";
break;
case "9":
MoneyTranStr="玖";
break;
default:
MoneyTranStr="零";
break;
}
MoneyStr=MoneyStr+MoneyTranStr;
}

switch(MoneyStr.Length.ToString())//将汉字用单位连接起来,如贰贰 转换为 贰拾贰元
{
case "1":
tempStr=MoneyStr+"元";
break;
case "2":
tempStr=MoneyStr.Substring(0,1)+"拾"+(MoneyStr.Substring(1,1)=="零"?"":MoneyStr.Substring(1,1))+"元";
break;
case "3":
tempStr=MoneyStr.Substring(0,1)+"佰"+(MoneyStr.Substring(1,1)=="零"?"零":MoneyStr.Substring(1,1)+"拾")+(MoneyStr.Substring(2,1)=="零"?"":MoneyStr.Substring(2,1))+"元";
break;
case "4":
tempStr=MoneyStr.Substring(0,1)+"仟"+(MoneyStr.Substring(1,1)=="零"?"零":MoneyStr.Substring(1,1)+"佰")+(MoneyStr.Substring(2,1)=="零"?"零":MoneyStr.Substring(2,1)+"拾")+(MoneyStr.Substring(3,1)=="零"?"":MoneyStr.Substring(3,1))+"元";
break;
case "5":
tempStr=MoneyStr.Substring(0,1)+"万"+(MoneyStr.Substring(1,1)=="零"?"零":MoneyStr.Substring(1,1)+"仟")+(MoneyStr.Substring(2,1)=="零"?"零":MoneyStr.Substring(2,1)+"佰")+(MoneyStr.Substring(3,1)=="零"?"零":MoneyStr.Substring(3,1)+"拾")+(MoneyStr.Substring(4,1)=="零"?"":MoneyStr.Substring(4,1))+"元";
break;
case "6":
tempStr=MoneyStr.Substring(0,1)+"拾"+(MoneyStr.Substring(1,1)=="零"?"万":MoneyStr.Substring(1,1)+"万")+(MoneyStr.Substring(2,1)=="零"?"零":MoneyStr.Substring(2,1)+"仟")+(MoneyStr.Substring(3,1)=="零"?"零":MoneyStr.Substring(3,1)+"佰")+(MoneyStr.Substring(4,1)=="零"?"零":MoneyStr.Substring(4,1)+"拾")+(MoneyStr.Substring(5,1)=="零"?"":MoneyStr.Substring(5,1))+"元";
break;
default:
tempStr="支持金额不能超来1,000,000元";
break;
}

return ConverZero(tempStr);//调用CoverZero函数进一步处理成正确的大写格式

}

private string ConverZero(string str)
//实现将后面的零去掉,如贰仟零零元转换成贰仟元
{
while(str.IndexOf("零零")!=-1)
{
str=str.Replace("零零","零");
}
while(str.IndexOf("零元")!=-1)
{
str=str.Replace("零元","元");
}
return str;
}

posted on 2005-03-28 14:41    阅读(1146)  评论(0编辑  收藏  举报

导航