`

C#金额转换成大写

    博客分类:
  • C#
 
阅读更多
方法一

            /// <summary>
            /// Moneys to chinese.
            /// </summary>
            /// <param name="lowerMoney">要转换的金额字符数字</param>
            /// <returns>string</returns>
            /// <remarks></remarks>
            public string MoneyToChinese(string lowerMoney)
            {
                string functionResultValue = null;
                bool isNegative = false;//是否为负数
                if (lowerMoney.Substring(0,1)=="-") //判断lowerMoney如果为负数
                {
                    lowerMoney = lowerMoney.Trim().Remove(0, 1);
                    isNegative = true;
                }

                string strLower = null;
                string strUpart = null;
                string strUpper = null;
                int counter = 0;

                lowerMoney = Math.Round(Convert.ToDecimal(lowerMoney),2).ToString();//四舍五入保留两位小数
                if (lowerMoney.IndexOf('.') > 0) //如果是小数
                {
                   
                    if (lowerMoney.IndexOf('.') == lowerMoney.Length - 2) //小数点后是一位
                    {
                        lowerMoney = lowerMoney + "0";//补0  590.6
                    }
                }
                else //不是小数
                {
                    lowerMoney = lowerMoney + ".00";
                }

                strLower = lowerMoney;


                counter = 1;
                strUpper = "";

                while (counter<=strLower.Length)
                {
                    //从金额的最后一位开始截取
                    switch (strLower.Substring(strLower.Length-counter,1))
                    {
                        case".":
                            strUpart = "圆";
                            break;
                        case"0":
                            strUpart = "零";
                            break;
                        case"1":
                            strUpart = "壹";
                            break;
                        case"2":
                            strUpart="贰";
                            break;
                        case "3":
                            strUpart = "参";
                            break;
                        case "4":
                            strUpart = "肆";
                            break;
                        case "5":
                            strUpart = "伍";
                            break;
                        case "6":
                            strUpart = "陆";
                            break;
                        case "7":
                            strUpart = "柒";
                            break;
                        case "8":
                            strUpart = "捌";
                            break;
                        case "9":
                            strUpart = "玖";
                            break;
                        default:
                            break;

                    }

                    switch (counter)
                    {
                        case 1:
                            strUpart = strUpart + "分";
                            break;
                        case 2:
                            strUpart = strUpart + "角";
                            break;
                        case 3:
                            strUpart = strUpart + "";
                            break;
                        case 4:
                            strUpart = strUpart + "";
                            break;
                        case 5:
                            strUpart = strUpart + "拾";
                            break;
                        case 6:
                            strUpart = strUpart + "佰";
                            break;
                        case 7:
                            strUpart = strUpart + "仟";
                            break;
                        case 8:
                            strUpart = strUpart + "万";
                            break;
                        case 9:
                            strUpart = strUpart + "拾";
                            break;
                        case 10:
                            strUpart = strUpart + "佰";
                            break;
                        case 11:
                            strUpart = strUpart + "仟";
                            break;
                        case 12:
                            strUpart = strUpart + "亿";
                            break;
                        case 13:
                            strUpart = strUpart + "拾";
                            break;
                        case 14:
                            strUpart = strUpart + "佰";
                            break;
                        case 15:
                            strUpart = strUpart + "仟";
                            break;
                        case 16:
                            strUpart = strUpart + "万";
                            break;
                        default:
                            strUpart = strUpart + "";
                            break;

                    }

                    strUpper = strUpart + strUpper;
                    counter = counter + 1;
                }

                //特殊处理

                strUpper = strUpper.Replace("零拾", "零");
                strUpper = strUpper.Replace("零佰", "零");
                strUpper = strUpper.Replace("零仟", "零");
                strUpper = strUpper.Replace("零零零", "零");
                strUpper = strUpper.Replace("零零", "零");
                strUpper = strUpper.Replace("零角零分", "整");
                strUpper = strUpper.Replace("零分", "整");
                strUpper = strUpper.Replace("零角", "零");
                strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
                strUpper = strUpper.Replace("零亿零万", "亿");
                strUpper = strUpper.Replace("零万零圆", "万圆");
                strUpper = strUpper.Replace("万零圆", "万圆");
                strUpper = strUpper.Replace("零亿", "亿");
                strUpper = strUpper.Replace("零万", "万");
                strUpper = strUpper.Replace("零圆", "圆");
                //return strUpper;
                //对壹圆以下金额的处理
                if (strUpper.Substring(0,1)=="圆")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);   
                }
                if (strUpper.Substring(0, 1) == "零")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "角")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "分")
                {
                    strUpper = strUpper.Substring(1, strUpper.Length - 1);
                }
                if (strUpper.Substring(0, 1) == "整")
                {
                    strUpper = "零圆整";
                }
                functionResultValue = strUpper;
                return functionResultValue;
            }



方法二
   
        /// <summary>
        /// 大写金额函数
        /// </summary>
        /// <param name="str">金额</param>
        /// <param name="nflag">0或1</param>
        private static void BigWrite(string str, int nflag)
        {
            try
            {
                if (str == null || str == "")
                    return;
                string numList = "零壹贰叁肆伍陆柒捌玖";
                string rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万";
                double number = 0;
                string tempOutString = null;

                number = double.Parse(str);

                if (number > 9999999999.99)
                    MessageBox.Show("超出范围的人民币值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //将小数转化为整数字符串
                string tempNumberString = Convert.ToInt64(number * 100).ToString();
                int tempNmberLength = tempNumberString.Length;
                int i = 0;
                while (i < tempNmberLength)
                {
                    int oneNumber = Int32.Parse(tempNumberString.Substring(i, 1));
                    string oneNumberChar = numList.Substring(oneNumber, 1);
                    string oneNumberUnit = rmbList.Substring(tempNmberLength - i - 1, 1);
                    if (oneNumberChar != "零")
                        tempOutString += oneNumberChar + oneNumberUnit;
                    else
                    {
                        if (oneNumberUnit == "亿" || oneNumberUnit == "万" || oneNumberUnit == "元" || oneNumberUnit == "零")
                        {
                            while (tempOutString.EndsWith("零"))
                            {
                                tempOutString = tempOutString.Substring(0, tempOutString.Length - 1);
                            }
                        }
                        if (oneNumberUnit == "亿" || (oneNumberUnit == "万" && !tempOutString.EndsWith("亿")) || oneNumberUnit == "元")
                        {
                            tempOutString += oneNumberUnit;
                        }
                        else
                        {
                            bool tempEnd = tempOutString.EndsWith("亿");
                            bool zeroEnd = tempOutString.EndsWith("零");
                            if (tempOutString.Length > 1)
                            {
                                bool zeroStart = tempOutString.Substring(tempOutString.Length - 2, 2).StartsWith("零");
                                if (!zeroEnd && (zeroStart || !tempEnd))
                                    tempOutString += oneNumberChar;
                            }
                            else
                            {
                                if (!zeroEnd && !tempEnd)
                                    tempOutString += oneNumberChar;
                            }
                        }
                    }
                    i += 1;
                }
                while (tempOutString.EndsWith("零"))
                {
                    tempOutString = tempOutString.Substring(0, tempOutString.Length - 1);
                    //贰佰贰拾叁元肆角伍分
                  
                }
                while (tempOutString.EndsWith("元"))
                {
                    tempOutString = tempOutString + "整";
                }
                if (nflag == 0)
                {
                    //this.m_GetInterfaceData.SetFieldValue("Finance_PReceipt.Capitalization", tempOutString);
                    MessageBox.Show(tempOutString=tempOutString.Replace("元","美元").Replace("分","美分").Replace("角",""));
                }
              

            }
            catch (Exception e_edit)
            {
                MessageBox.Show(e_edit.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }	
分享到:
评论

相关推荐

    C#小写金额转换大写金额

    C#将小写金额转换成大写,很高兴能与大家分享我的资源

    C#中将数字金额转化为大写金额

    在日常财务处理、票据填写等场景中,经常需要将阿拉伯数字表示的金额转换成汉字大写形式,特别是在中国的财务领域中更是如此。这种转换通常是为了确保金额的准确性和防止篡改。本文将详细介绍如何在C#中实现这一功能...

    C#金额数字大写转换_含元整

    C#语言的对金额的大写转换,包括圆整等,可以直接复制使用,亲测过。

    将金额转换成大写金额 封装类 及 例子

    本文将深入探讨如何使用C#语言来封装一个类,实现将金额转换为大写金额的功能,并通过具体的代码示例进行解析。 首先,我们需要创建一个名为`BigMoney`的类,这个类的主要任务是将输入的浮点数或字符串形式的金额...

    C#金额小写转大写

    在压缩包中,`说明.txt`文件可能包含了详细的使用说明和代码实现逻辑,而`AmountTransfer`可能是项目中的主要源代码文件,包含实现金额转换功能的类或方法。通过阅读`AmountTransfer`源代码,我们可以更深入地了解...

    C#货币金额转为中文大写

    总结来说,C#中将货币金额转换为中文大写涉及到字符串操作、数值处理以及中文字符的使用。通过编写适当的方法,我们可以轻松实现这一功能,满足财务系统中的需求。在实际开发中,还需要根据具体业务逻辑进行调整和...

    C#数字金额转换为大写中文金额

    在日常财务处理、银行系统以及各种商业应用中,将数字金额转换成大写中文金额是一项非常实用的功能。这种转换主要用于正式文件中的金额表示,如发票、支票等,可以有效防止金额被篡改。下面将详细介绍如何在C#中实现...

    C#把金额转换为大写

    在提供的压缩文件`QT067-C#把金额转换为大写word版`中,应该包含了这个功能的详细实现和可能的测试用例,可以帮助开发者理解和学习如何在C#中进行金额转换。 总的来说,将金额转换为大写是C#编程中的一项实用技能,...

    C#数字转换为汉字大写数字—财务用

    将数字转换为汉字大写数字。不支持负数。 输入(字符串):"10200004.02" 输出(字符串):"壹仟零贰拾萬零肆元零角贰分

    C#如何将商品金额小写转换成大写(C# .net)

    在IT行业中,编程语言C#是广泛用于开发各种应用程序,包括桌面应用、Web应用以及游戏开发等。在处理金融或会计相关的...通过理解和利用这些工具,我们可以创建出高效且准确的金额转换算法,满足不同业务场景的需求。

    C#金额从小写转为大写

    ### C# 金额转换:小写转大写 在日常生活中,我们经常会遇到需要将数字金额转换成汉字大写的情况,尤其是在财务、会计以及银行系统中更为常见。对于编程语言如C#而言,实现这种功能也是一项基本技能。 #### 一、...

    FastReport4小写金额转大写金额

    FastReport 4 小写金额转中文大写金额,C#代码脚本 例子中代码放入Table中TableCell的AfterData事件中

    C#财务用类 小写金额转大写金额

    C# 财务用类 输入小写金额 转换成大写金额

    Asp.net C# 数字货币金额转换为中英文金额写法

    在Asp.net C#开发中,经常需要处理与货币相关的数据,这包括将数字金额转换成规范的中英文表示方式,以满足财务报告、发票或合同等场景的需求。本资源提供的程序实现了一种高效的方法来完成这个任务。下面将详细阐述...

    C#把金额数据从小写转换为大写,C#源代码

    使用这个函数,你可以轻松地将任何小写的金额转换为大写形式。例如,`ConvertToChinese("123456789.00")` 将返回 "壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元整"。 在实际项目中,可能还需要考虑其他因素,比如货币符号...

    C#实现金额转换成中文大写金额

    在C#编程中,将金额转换成中文大写金额是一个常见的需求,特别是在财务软件或会计系统中。这个功能有助于防止由于数字输入错误导致的财务问题,因为中文大写金额更不容易被篡改。以下是如何使用C#实现这个功能的详细...

    c#实现大小写金额转换

    在C#中实现大小写金额转换的核心在于将阿拉伯数字转换为中文大写数字,并适当地添加单位如“元”、“角”、“分”。此外,还需处理小数部分,确保转换后的文本格式正确,符合中文财务规范。 #### 核心逻辑解析 1. *...

    C#实现数字转化大写

    在编程领域,尤其是在财务软件开发中,将数字转化为大写汉字是常见的需求,尤其是在处理...以上就是使用C#实现数字转化大写的基本原理和方法,它们能够帮助开发者高效地处理财务相关的数字表示,提高软件的用户体验。

    C#大写金额转数字代码

    本篇文章详细介绍了如何使用C#语言实现将大写金额转换为数字的过程。通过逐个处理每个金额单位并累加计算,可以准确地完成转换任务。这种方法不仅可以应用于财务系统中,还可以广泛应用于其他需要处理大写金额的场景...

    C#人名币大写转换C#人名币大写转换C#人名币大写转换

    在IT行业中,尤其是在软件开发领域,经常会遇到将数字金额转换为中文大写的场景,这在处理财务、会计或银行系统时尤为重要。对于C#开发者来说,实现人民币大写转换是一项基本技能。本文将深入探讨如何在C#中进行...

Global site tag (gtag.js) - Google Analytics