算法:网上找的小写金额转为大写,看不懂,高手帮忙解释一下
说说其流程         
            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;
        }

解决方案 »

  1.   

    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];//如果是有小数点的,从倒数第二个开始转换!也就是MyScale的第四个拾开始
                    } 
                    else 
                    { 
                        M += MyScale[i + 1];//没有小数点,从最后一个开始转换!
                    } 
                } 
      

  2.   


     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; 
            }