最近项目上用到小写转大写金额,公司同事还准备写一段代码来实现,后来发现架构上有现成的。

其实在银行、进销存、CRM等系统中经常可能用到

这个跟大家分享一下:

小写金额转大写

/// <summary>
        ///        获取金额的大写中文文字            返回:中文数字文字
        //        mvarOrDollar 数字金额大小, mstrLanguage 字符串语言 P:简体中文 C:繁体中文  
        /// </summary>
        /// <param name="mvarOrDollar"></param>
        /// <param name="mstrLanguage"></param>
        /// <returns></returns>
        public static string GetDollorStr(double mvarOrDollar)
        {
            //返回简体中文的中文描述
            return GetDollorStr(mvarOrDollar,"P");
        }
        public static string GetDollorStr(double mvarOrDollar,string mstrLanguage)
        {
            string t_word;
            string WLAMT;
            //            double tt;
            t_word = "";
            //            If mstrLanguage = "E" Or mstrLanguage = "e" Then
            //                t_word = t_word + noinword(Int(mvarOrDollar))
            //                If mvarOrDollar <> Int(mvarOrDollar) Then
            //                    tt = Int((mvarOrDollar - Int(mvarOrDollar)) * 100)
            //                    t_word = t_word & "And " & " Cents " & noinword(tt)
            //                End If
            //                 
            //            Else
            //            WLAMT = mvarOrDollar.ToString();
            WLAMT = StrFormat(mvarOrDollar, 12, 2);
            
            for(int i = 0;i<12;i++)
            {                       
                if (i != 9)
                    t_word = t_word + SHRCHG(WLAMT, WLAMT.Substring(i, 1), i, mstrLanguage);
                 
            }
            string spacestr = "";
            t_word = t_word + spacestr.PadLeft(40 - t_word.Length,' ');
                
            //            End If
            return t_word.Trim();
        }

private static string SHRCHG(string WLAMT, string WLCD,int WLLOC,string mstrLanguage)
        {
            string WLNAME;
            string WLDD;
            if (mstrLanguage == "C") 
                WLDD = "货ㄕ珺窾ㄕ珺じ  àだ";
            else
                //WLDD = "亿千百十万千百十元 角分";
                WLDD = "亿仟佰拾万仟佰拾元 角分";
 
            WLNAME = "    ";
            switch (WLCD)
            {
                case " ":
                    WLNAME = "   ";
                    break;
                case "1":
                    //WLNAME = IIf(mstrLanguage = "C", "滁", "壹") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "滁"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "壹" + WLDD.Substring(WLLOC, 1);
                    break;
                case "2":
                    //'WLNAME = IIf(mstrLanguage = "C", "禠", "贰") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "禠"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "贰" + WLDD.Substring(WLLOC, 1);
                                        
                    break;
                case "3":
                    //'WLNAME = IIf(mstrLanguage = "C", "把", "叁") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "把"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "叁" + WLDD.Substring(WLLOC, 1);
                    
                    break;
                case "4":
                    //'WLNAME = IIf(mstrLanguage = "C", "竩", "肆") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "竩"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "肆" + WLDD.Substring(WLLOC, 1);
                    
                    break;
                case "5":
                    //'WLNAME = IIf(mstrLanguage = "C", "ヮ", "伍") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "ヮ"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "伍" + WLDD.Substring(WLLOC, 1);
                    
                    break;
                case "6":
                    //'WLNAME = IIf(mstrLanguage = "C", "嘲", "陆") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "嘲"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "陆" + WLDD.Substring(WLLOC, 1);
                    
                    break;
                case "7":
                    //'WLNAME = IIf(mstrLanguage = "C", "琺", "柒") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "琺"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "柒" + WLDD.Substring(WLLOC, 1);
                    
                    break;
                case "8":
                    //'WLNAME = IIf(mstrLanguage = "C", "", "捌") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = ""  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "捌" + WLDD.Substring(WLLOC, 1);
                    break;
                case "9":
                    //'WLNAME = IIf(mstrLanguage = "C", "╤", "玖") + Mid(WLDD, (WLLOC - 1) * 2 + 1, 2)
                    if(mstrLanguage.Equals("C"))
                        WLNAME = "╤"  + WLDD.Substring(WLLOC, 1);
                    else
                        WLNAME = "玖" + WLDD.Substring(WLLOC, 1);
                    break;
                case "0":
                    string locList = "123567";
                    if (locList.IndexOf(WLLOC.ToString().Trim()) > 0 && WLAMT.Substring(WLLOC + 1, 1) != "0")
                        if(mstrLanguage.Equals("C"))
                            WLNAME = "箂";
                        else
                            WLNAME = "零";
                    else
                        WLNAME = "";
                    if (WLAMT.Substring(WLLOC,1) == ".")
                        WLNAME = WLDD.Substring(WLLOC, 1);
                    
                    if (WLLOC == 4 && (WLAMT.Substring(1, 1) != "0" || WLAMT.Substring(2, 1) != "0" || WLAMT.Substring(3, 1) != "0"))
                        if(mstrLanguage.Equals("C"))
                            WLNAME = "窾";
                        else
                            WLNAME = "万";
                    break;
                                                                
            }                                                                                                                                                                                                                                                  
            return WLNAME.Trim();
        }

private static string StrFormat(double Tlong,int Along,int Adec)
        {
            string tstr;
   
   
            tstr = Tlong.ToString().Trim();
            if (tstr.IndexOf(".") == -1)
            {
                tstr += ".00";
            }
            else
            {
                if (tstr.IndexOf(".") == 0)
                {
                    tstr = "0" + tstr;
                }
                if (tstr.IndexOf(".") == tstr.Length - 1)  //0.  case
                {
                    tstr = tstr + "0";
                }
                if (tstr.Substring(tstr.IndexOf(".") + 1).Length == 1)
                {
                    tstr = tstr + "0";
                }
                else
                {
                    tstr = tstr.Substring(0, tstr.IndexOf(".") + 3);
                }
                
            }    
            if (tstr.Length < 12) 
                tstr = tstr.PadLeft(12,' ');
            return tstr;

}

转载于:https://www.cnblogs.com/jcomet/archive/2010/03/29/1699284.html

C#实现小写金额转大写金额相关推荐

  1. 人民币小写金额转大写金额

    #region 人民币小写金额转大写金额/// <summary>/// 小写金额转大写金额/// </summary>/// <param name="Mon ...

  2. 人民币 小写金额转换为大写金额

    人民币 小写金额转换为大写金额 标签(空格分隔): 人民币 小写金额转换为大写金额 jsp: div class="form-group"> <label class= ...

  3. 小写金额转换为大写金额JS方法

    /**  *function: 小写金额转换为大写金额  *return: 转换后的大写金额,类型String */ function money2Cn(str){  var temp = parse ...

  4. #小写金额转大写金额

    小写金额转大写金额 闲话不多说,直接上代码: function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖";$c2 = "分角元拾佰仟万拾佰 ...

  5. 将小写金额转换为大写金额

    /* 运行环境:MS-SQL 2000 将小写金额转换为大写金额 整数部分最大值:9位数 小数部分最大值:2位 必须格式:整数.小数 状态:完成 Update date:2007-10-07 */ / ...

  6. c语言如何实现人民币转换编程,C语言成序设计实现人民币小写金额与大写金额的转换.docx...

    main() {double r,y; int x, m,n,j,i,k,flag=0; int str1[10]={"零","壹","贰" ...

  7. 无限位小写金额转换大写金额(修订版)

    说明: 1.本程序用JavaScript语言编写.转换方法严格遵照中国人民银行规定的银行支票中关于金额数字中文大写填写规范的相关规定(见下面附文),规定中两可之处按简便方法处理. 2.输入小写金额原则 ...

  8. java小写金额转大写金额

    1.引入hutool依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all& ...

  9. 【PHP】小写金额转大写金额

    /*** 将数值金额转换为中文大写金额* @param $amount float 金额(支持到分)* @param $type int 补整类型,0:到角补整;1:到元补整* @return mix ...

最新文章

  1. select count(*) from temp 与select count(1) from temp有什么区别
  2. 计算机系统覆盖,计算机系统软件顶会OSDI 2021最佳论文出炉,邢波团队研究入选...
  3. [2dPIC调试笔记]输入参数归一化1014(1)
  4. 苹果ios用js的Date()出现NaN问题解决办法
  5. go语言mysql框架_超级详细:Go语言框架Gin和Gorm实现一个完整的待办事项微服务...
  6. python中https请求的封装_python接口自动化9-https请求(SSL)
  7. Selenium2 Python自动化测试实战(第二版)第一部分 自动化测试基础-总结笔记
  8. linux桌面鼠标变一只手,Linux_安装鼠标主题 让 Ubuntu 的鼠标变漂亮,对ubuntu默认的白色鼠标主题厌 - phpStudy...
  9. Linux安装ParaView
  10. REST-assured基本使用
  11. macos安装盘第三方工具制作_如何制作macOS High Sierra USB启动安装盘
  12. MES与设备层的集成
  13. 利用 Amazon IoT Greengrass 在边缘 DIY 自动浇花系统
  14. 千分号‰打不出来 怎么打
  15. vue学习【非父子组件传值问题(Bus/总线/观察者模式)】
  16. 07_数据降维,降维算法,主成分分析PCA,NMF,线性判别分析LDA
  17. CXF框架发布WebService服务的例子
  18. 后台产品的数据可视化图表产品设计
  19. Centos7安装elasticsearch5 一
  20. 全网新闻数据(SogouCA)版本:2012可下载

热门文章

  1. 数据结构与算法 | Leetcode 19. Remove Nth Node From End of List
  2. 1.3 Shell脚本编程基础之条件测试
  3. Nordic Collegiate Programming Contest 2016
  4. Unity 3D开发-C#脚本语言的一些基础用法
  5. bootstrap-面板
  6. squirrelmail+change_sqlpass 认证 问题
  7. ERP计划参数如何在线更新
  8. zabbix 如何监控tcp的SYN,establised?
  9. javax.servlet.http.HttpServletResponse接口(HTTP版本)
  10. OptaPlanner 轻量级规划调度引擎