数值转大写人民币

类似的小功能网上有很多写法,但关键在于思路。思路决定了代码的精炼,决定了效能。

1)将12345.6789转为“壹万贰仟叁佰肆拾伍元陆角捌分”

逻辑:

第一步)四舍五入取2位小数,然后去掉小数点。

第二步)循环每个字符,把数字转为对应的大写汉字,并在其后加入单位标识{x}

第三步)把标识{x}替换为对应的单位

public string getMoneyUpper(double money)
        {
            string n = money.ToString("#0.00").Replace(".", "");
            string MoneyUpper = "";
            int l = n.Length;
            for (int i = 0; i < n.Length; i++)
            {
                switch (n[i].ToString())
                {
                    case "0": MoneyUpper += ""; break;
                    case "1": MoneyUpper += ""; break;
                    case "2": MoneyUpper += ""; break;
                    case "3": MoneyUpper += ""; break;
                    case "4": MoneyUpper += ""; break;
                    case "5": MoneyUpper += ""; break;
                    case "6": MoneyUpper += ""; break;
                    case "7": MoneyUpper += ""; break;
                    case "8": MoneyUpper += ""; break;
                    case "9": MoneyUpper += ""; break;
                    default: break;
                }
                MoneyUpper += "{" + l + "}";
                l--;
            }

        MoneyUpper = MoneyUpper.Replace("{1}", "分");
        MoneyUpper = MoneyUpper.Replace("{2}", "角");
        MoneyUpper = MoneyUpper.Replace("{3}", "元");
        MoneyUpper = MoneyUpper.Replace("{4}", "拾");
        MoneyUpper = MoneyUpper.Replace("{5}", "佰");
        MoneyUpper = MoneyUpper.Replace("{6}", "仟");
        MoneyUpper = MoneyUpper.Replace("{7}", "萬");
        MoneyUpper = MoneyUpper.Replace("{8}", "拾");

return MoneyUpper;
        }

2)找到12345.6789的第1个位置(从右向左,分开始)的大写汉字

public static string getCapsMoney(double money,int index)
{
        string n = money.ToString("#0.00").Replace(".", "");

        if (index < n.Length)
        {
            switch (n[n.Length - 1 - index].ToString())
            {
                case "0": return "";
                case "1": return "";
                case "2": return "";
                case "3": return "";
                case "4": return "";
                case "5": return "";
                case "6": return "";
                case "7": return "";
                case "8": return "";
                case "9": return "";
                default: return "/";
            }
        }
        else
            return "/";
}
原文地址:https://www.cnblogs.com/kandyvip/p/4664350.html