zoukankan      html  css  js  c++  java
  • 阿拉伯数字转中文小写数字

    C#版本

    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace NumberConventer
    {
        class Class1
        {
            private string[] CnNum = { "", "", "", "", "", "", "", "", "", "" };
            private string[] ShiNum = { "", "", "", "" };
            private string[] WanNum = { "", "", "亿" };
            private string NumTh, OutCn;
    
    
            private bool isNumber(string aaa)
            {
                try
                {
                    int bbb = Convert.ToInt16(aaa);
                    return true;
                }
                catch
                {
                    return false;
                }
            }//判断是否为数字
    
            private string ChangeChineseNum(string Number,int Numlan)
            {
                bool Zero = false, Wan = false, Hand = true;
                //zero 为是否需要输出汉字“零”,Wan为首否需要输出汉字“万”或“亿”,Hand 判断是否为第一个非零数字。
                int NumTemp;
                bool Booltemp = Int32.TryParse(Number, out NumTemp);
                if (!Booltemp)
                {
                    NumTemp = 0;
                }
                for (int i = 1; i <= Numlan; i++)
                {
                    NumTh = Number.Substring(i - 1, 1);
                    int NowNum, NowTh = Numlan + 1 - i;
    
                    if (isNumber(NumTh))
                    {
                        NowNum = Convert.ToInt16(NumTh);
                        //OutCn = OutCn + CnNum[i];
                    }
                    else
                    {
                        break;
                    }
    
                    if (NowNum == 0)
                    {
                        if (Hand == true)
                        {
                            continue;
                        }
                        else
                        {
                            Zero = true;
                        }
                    }
                    else
                    {
                        Wan = true;
                        if (Hand == true)
                        {
                            if (NumTemp > 9 && NumTemp < 20)
                            {
                                OutCn = OutCn + ShiNum[NowTh % 4];
                            }
                            else
                            {
                                OutCn = OutCn + CnNum[NowNum] + ShiNum[NowTh % 4];
                            }
    
                            Hand = false;
                        }
                        else
                        {
                            if (Zero == false)
                            {
                                OutCn = OutCn + CnNum[NowNum] + ShiNum[NowTh % 4];
                            }
                            else
                            {
                                OutCn = OutCn + CnNum[0] + CnNum[NowNum] + ShiNum[NowTh % 4];
                                Zero = false;
                            }
                        }
                    }
                    if (Wan == true && (NowTh - 1) % 4 == 0)
                    {
                        OutCn = OutCn + WanNum[((NowTh - 1) / 4) % 2];
                        for (int j = (NowTh - 1) / 8; j > 0; j = j - 1)
                        {
                            OutCn = OutCn + WanNum[2];
                        }
                        Wan = false;
                    }
    
                }
                if (isNumber(NumTh))
                {
                    return OutCn;
                }
                else
                {
                   return "包含非阿拉伯字符!请更正!";
                }
            }
        }
    }

    javascript版本

    View Code
    function ChangeChineseNum(Number) {
        var isNumber = function (aaa) {
            try {
                parseInt(aaa);
                return true;
            }
            catch (err) {
                return false;
            }
        };
    
        var CnNum = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
        var ShiNum = ["千", "", "十", "百"];
        var WanNum = ["", "万", "亿"];
        var NumTh, OutCn = "";
    
        var Zero = false, Wan = false, Hand = true;
        //zero 为是否需要输出汉字“零”,Wan为首否需要输出汉字“万”或“亿”,Hand 判断是否为第一个非零数字。
    
        var Numlan;
        var NumTemp;
        var Booltemp;
        if (isNumber(Number)) {
            NumTemp = parseInt(Number);
            Numlan = NumTemp.toString().length;
        }
        else {
            NumTemp = 0;
            Numlan = 0;
        }
        for (var i = 1; i <= Numlan; i++) {
            NumTh = Number.toString().substring(i - 1, i);
            var NowNum, NowTh = Numlan + 1 - i;
    
            if (isNumber(NumTh)) {
                NowNum = parseInt(NumTh);
                //OutCn = OutCn + CnNum[i];
            }
            else {
                break;
            }
    
            if (NowNum == 0) {
                if (Hand == true) {
                    continue;
                }
                else {
                    Zero = true;
                }
            }
            else {
                Wan = true;
                if (Hand == true) {
                    if (NumTemp > 9 && NumTemp < 20) {
                        OutCn = OutCn + ShiNum[NowTh % 4];
                    }
                    else {
                        OutCn = OutCn + CnNum[NowNum] + ShiNum[NowTh % 4];
                    }
    
                    Hand = false;
                }
                else {
                    if (Zero == false) {
                        OutCn = OutCn + CnNum[NowNum] + ShiNum[NowTh % 4];
                    }
                    else {
                        OutCn = OutCn + CnNum[0] + CnNum[NowNum] + ShiNum[NowTh % 4];
                        Zero = false;
                    }
                }
            }
            if (Wan == true && (NowTh - 1) % 4 == 0) {
                OutCn = OutCn + WanNum[((NowTh - 1) / 4) % 2];
                for (var j = parseInt((NowTh - 1) / 8); j > 0; j = j - 1) {
                    OutCn = OutCn + WanNum[2];
                }
                Wan = false;
            }
    
        }
        if (isNumber(NumTh)) {
            return OutCn;
        }
        else {
            return "包含非阿拉伯字符!请更正!";
        }
    }
  • 相关阅读:
    树上莫队学习笔记
    点分治学习笔记
    7.11总结
    线段树合并学习笔记
    7.10总结
    bzoj1201: [HNOI2005]数三角形----递推+bitset
    bitset(01串)优化
    Tarjan系列1
    bsgs(Baby Steps Giant Steps)算法
    [SD2015]序列统计——solution
  • 原文地址:https://www.cnblogs.com/fumj/p/2933021.html
Copyright © 2011-2022 走看看