首页 > 编程语言 >C#实现金额转换成中文大写金额到角分

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

时间:2024-12-19 11:32:09浏览次数:7  
标签:string C# iTemp 金额 大写 LowerMoney 角分 null

        /// <summary>
        /// 金额转换成中文大写金额
        /// </summary>
        /// <param name="LowerMoney">eg:10.74</param>
        /// <returns></returns>    
        public static string MoneyToUpper(string LowerMoney)
        {
            string functionReturnValue = null;
            bool IsNegative = false; // 是否是负数
            if (LowerMoney.Trim().Substring(0, 1) == "-")
            {
                // 是负数则先转为正数
                LowerMoney = LowerMoney.Trim().Remove(0, 1);
                IsNegative = true;
            }
            string strLower = null;
            string strUpart = null;
            string strUpper = null;
            int iTemp = 0;
            // 保留两位小数 123.489→123.49  123.4→123.4
            LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
            if (LowerMoney.IndexOf(".") > 0)
            {
                if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
                {
                    LowerMoney = LowerMoney + "0";
                }
            }
            else
            {
                LowerMoney = LowerMoney + ".00";
            }
            strLower = LowerMoney;
            iTemp = 1;
            strUpper = "";
            while (iTemp <= strLower.Length)
            {
                switch (strLower.Substring(strLower.Length - iTemp, 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;
                }

                switch (iTemp)
                {
                    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;
                iTemp = iTemp + 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("零元", "元");
            strUpper = strUpper.Replace("零零", "零");

            // 对壹元以下的金额的处理
            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 = "零元整";
            }
            functionReturnValue = strUpper;

            if (IsNegative == true)
            {
                return "负" + functionReturnValue;
            }
            else
            {
                return functionReturnValue;
            }
        }

 

标签:string,C#,iTemp,金额,大写,LowerMoney,角分,null
From: https://www.cnblogs.com/lijunzaizi/p/18616803

相关文章

  • MacOS+vscode调试mysql8.0源码
    环境:MacOsM1vscode前置:安装brew##安装brew/usr/bin/ruby-e"$(curl-fsSLhttps://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"##环境变量eval"$(/opt/homebrew/bin/brewshellenv)"下载源码带boost版本下载之后解压vscode插件安装##直接搜索,然后安......
  • 毕业设计:python二手车数据分析可视化系统 requests爬虫 Echarts可视化 Django框架(源码
    毕业设计:python二手车数据分析可视化系统requests爬虫Echarts可视化Django框架(源码)✅1、项目介绍技术栈:python语言、Django框架、MySQL数据库、requests爬虫技术、汽车之家二手车、Echarts可视化2、项目界面(1)中国地图–全国各地车辆数据(2)会员注册年份与等级(3)二......
  • (2024最新毕设合集)基于SpringBoot的社交型音乐网站+25664|可做计算机毕业设计JAVA、PHP
    目 录摘要1绪论1.1研究背景与意义1.3研究内容1.4论文结构与章节安排2 社交型音乐网站分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 ......
  • 电脑开机或打开程序提示缺少MSCDRUN.DLL文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 电脑开机或打开程序提示缺少MSCOMCTL.OCX文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 电脑开机或打开程序提示缺少mscomct2.ocx文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 让Chrome http3[QUIC]通信支持所有类型证书,自签名+信任机构
    Chromehttp3通信默认仅支持信任机构发行的证书,.net的开发者证书或CloudFlare的10年证书,或者其他自己创建的自签名证书是开启不了http3通信的。通过下面设置可以开启对自签名证书的支持,这样就可以愉快的使用http3测试了:Chrome最新版,目前是131,地址栏输入:chrome://flags,然后搜......
  • IEC104中为什么我们需要单点和双点信号
    REDISANT提供互联网与物联网开发测试套件 #互联网与中间件:RedisAssistantZooKeeperAssistantKafkaAssistantRocketMQAssistantRabbitMQAssistantPulsarAssistantHBaseAssistantNoSqlAssistantEtcdAssistantGarnetAssistant工业与物联网:MQTTAssis......
  • 使用 C++ 和 Tesseract 实现验证码识别
    安装TesseractOCR首先,你需要安装TesseractOCR库。如果你还没有安装,请按照以下步骤操作:在Ubuntu上安装Tesseract:bashsudoaptupdatesudoaptinstalltesseract-ocrsudoaptinstalllibleptonica-devsudoaptinstalllibtesseract-dev在Windows上安装Tesse......
  • IEC101/140 监视点与控制点
    IEC101/140监视点与控制点IEC-60870-5-104协议适用于远程控制设备和系统,通过数据传输来监控和控制地理上广泛的过程。该协议结合了IEC-60870-5-101协议和TCP/IP提供的传输功能。任何使用IEC-60870-5-104协议的应用程序都将有一个主站(控制站)和一个或多个从站(受控站)。主站......