各位高人:
小弟急需用到这方面知识,拜谢先!!!!
介绍如下: 在C#环境下,实现大写金额转换为阿拉伯数字,例如壹仟肆佰伍拾陆元柒角捌分转为1456.78元。
代码怎么完成呢?
不胜感激!!!!
用swich语句如果数额大点的的确很麻烦。
我写过把数字转换成罗马数字的代码看看有没有帮助。
int sum,a,b,c;
string sum1; //罗马数字
string [] s1={"" ,"I","II","III","IV","V","VI","VII","VIII","IX"};
string [] s2={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
string [] s3={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
a=sum%10;
b=((sum-a)%100)/10;
c=((sum-a-b)%1000)/100;
sum1=s3[c]+s2[b]+s1[a]; //罗马数字
好像差的挺远的呀。。。
我试着做一些,代码如下:
存在的问题是: a:万位一下的可以运行,如叁万叁仟叁佰叁拾叁元,就可以转换的;单独的以万数量级也可以,如贰拾肆万,也行的。但是当跨位数时,就出现问题了,如 叁佰肆拾伍万肆仟叁佰陆拾柒元就转为54707 应该叁佰万当300转了,肆拾万当40转了,不解。
b 碰到零时怎么执行呢?
c 当‘元’、‘万’前面是‘拾’,‘佰’,‘仟’等位数时该怎么判断呢?
急需请教,谢谢先!
public static double Change(string sum)
{
char[] Char=sum.ToCharArray(); //把字符串转化为数组
int The_Len;
int m,n=0;int l;
double S1=0;
int S2=0;
double result=0;
m=Char.Length;
if(Char[m-1]=='整')
{
The_Len = m - 2;
}
else
{
The_Len = m - 1;
}
for(n=The_Len;n>=1;n = n - 2)
{
switch(Char[n])
{
case '分':
S1=0.01;break;
case '角':
S1=0.1;break;
case '元':
S1=1; break;
case '拾':
for(l=0;l<m-1;l++)
{
if(Char[l]=='万')
{
if (l>=2)
{
if (l小于n)
{S1=10;}
else
{S1=100000;} //判断是否在万位以前
}
else
{S1=10;}
}
else
{S1=10;}
}
break;
case '佰':
for(l=0;l<m-1;l++)
{
if(Char[l]=='万')
{
if (l>=2)
{ if (l小于n)
{S1=1000000;}
else
{S1=100;}
}
else
{S1=100;}
}
else
{S1=100;}
}
break;
case '仟':
for(l=0;l<m-1;l++)
{
if(Char[l]=='万')
{
if (l>=2)
{ if (lDn) //小于号在预览里边出不来,不好意思 汉语代替 <
{S1=10000000;}
else
{S1=1000;}
}
else
{S1=1000;}
}
else
{S1=1000;}
}
break;
case '万':
S1=10000;break;
case '亿':
S1=100000000;break;
}
switch(Char[n-1])
{
case '壹':
S2=1;break;
case '贰':
S2=2;break;
case '叁':
S2=3;break;
case '肆':
S2=4;break;
case '伍':
S2=5;break;
case '陆':
S2=6;break;
case '柒':
S2=7;break;
case '捌':
S2=8;break;
case '玖':
S2=9;break;
}
result = result+S1*S2;
}