算法:网上找的小写金额转为大写,看不懂,高手帮忙解释一下
说说其流程
public string chang(string money)
{
//将小写金额转换成大写金额
double MyNumber = Convert.ToDouble (money );
String[] MyScale = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" };
String[] MyBase = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String M = "";
bool isPoint = false;
if (money.IndexOf(".") != -1)
{
money = money.Remove(money.IndexOf("."), 1);
isPoint = true;
}
for (int i = money.Length; i > 0; i--)
{
int MyData = Convert.ToInt16(money[money.Length - i].ToString ());//?
M += MyBase[MyData];//?
if (isPoint==true)
{
M += MyScale[i - 1];//?
}
else
{
M += MyScale[i + 1];//?
}
}
return M;
}
说说其流程
public string chang(string money)
{
//将小写金额转换成大写金额
double MyNumber = Convert.ToDouble (money );
String[] MyScale = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" };
String[] MyBase = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String M = "";
bool isPoint = false;
if (money.IndexOf(".") != -1)
{
money = money.Remove(money.IndexOf("."), 1);
isPoint = true;
}
for (int i = money.Length; i > 0; i--)
{
int MyData = Convert.ToInt16(money[money.Length - i].ToString ());//?
M += MyBase[MyData];//?
if (isPoint==true)
{
M += MyScale[i - 1];//?
}
else
{
M += MyScale[i + 1];//?
}
}
return M;
}
for (int i = money.Length; i > 0; i--)
{
int MyData = Convert.ToInt16(money[money.Length - i].ToString ());//取最末尾的那个字符,转为数字!
M += MyBase[MyData];//将转过后的字符串依次相加
if (isPoint==true)
{
M += MyScale[i - 1];//如果是有小数点的,从倒数第二个开始转换!也就是MyScale的第四个拾开始
}
else
{
M += MyScale[i + 1];//没有小数点,从最后一个开始转换!
}
}
public string chang(string money)
{
//将小写金额转换成大写金额
double MyNumber = Convert.ToDouble (money ); //把参数money转化成double类型的数据
String[] MyScale = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" }; //定义一个名为MyScale的字符串数组
String[] MyBase = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //定义一个名为MyBase的字符串数据
String M = ""; //初始化本函数要返回的字符串为空
bool isPoint = false; //初始化一个变量,用来判断是否有小数点
if (money.IndexOf(".") != -1) //当存在小数点时
{
money = money.Remove(money.IndexOf("."), 1); //重置money值,删除其中的小数点
isPoint = true; //此变量值改为true,用来标识参数money中含有小数点
}
for (int i = money.Length; i > 0; i--)
{
int MyData = Convert.ToInt16(money[money.Length - i].ToString ());//转换小写到大写,首先取出第一个小写数字
M += MyBase[MyData];//把第一个数字转换成大写后添加到字符串中
if (isPoint==true) //如果存在小数点
{
M += MyScale[i - 1];//给小数位进行添加单位
}
else //如果不存在小数点
{
M += MyScale[i + 1];//小数位进行添加单位,因为有小数点与没有小数点是不同的,隔了两个数位"分"和"角"
}
}
return M;
}