现在的位置: 首页 > 综合 > 正文

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

2012年02月02日 ⁄ 综合 ⁄ 共 4383字 ⁄ 字号 评论关闭

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;

}

抱歉!评论已关闭.