• 数字转英文


    <PRE class="brush: csharp; auto-links: true; collapse: true; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">/*
     * by:stefanie 
     * date:2009-12-04
     */
    
    namespace ConsoleApplication1
    {
        using System;
        using System.Collections.Generic;
        using System.Text;
    
        class Program
        {
           private static Dictionary&lt;int, string&gt; dicUnit;
           private static Dictionary&lt;int, string&gt; dicPlace;
    
           static string Splite_Place = " {0} ";
           static string Splite_Hundreds_Tens = " and ";
           static string Splite_Tens_Unit = "-";
           static string Splite_Point = "point";
    
            //template
           static string Unit_Tens_Place = "{0}";//20,30,40...90
           static string Hundreds_Place = "{0} hundred";
    
            static void Main(string[] args)
            {
                initDic();
                string result = "";
                Console.WriteLine("Please input a Number:");
                string input = Console.ReadLine();
                int pointIndex =input.IndexOf('.');
                string integer = input;
                string dec ="";
                if(pointIndex != -1 )
                {
                    integer = input.Substring(0, pointIndex);
                    dec = input.Substring(pointIndex + 1);
                }
              
                int len = integer.Length;
                if (len &gt; 15)
                {
                    Console.WriteLine("Input number is too long");
                    return;
                }
    
                int index = (len - 1) / 3;
                int bwNum, swNum, gwNum;
                string str;
                for (int i = 0; i &lt;= index; i++)
                {
                    str = integer.Substring(i*3);
                    if (str.Length &gt; 3)
                    {
                        str = integer.Substring(i * 3, 3);
                    }
                  
                    if (str.Length == 3)
                    {
                        bwNum = int.Parse(str.Substring(0, 1));
                        swNum = int.Parse(str.Substring(1, 1));
                        gwNum = int.Parse(str.Substring(2, 1));
                        result += GetStr(bwNum, swNum, gwNum);
                    }
                    else if (len == 2)
                    {
                        swNum = int.Parse(str.Substring(0, 1));
                        gwNum = int.Parse(str.Substring(1, 1));
                        result += GetStr(swNum, gwNum);
                    }
                    else if (len == 1)
                    {
                        gwNum = int.Parse(str.Substring(0, 1));
                        if (gwNum != 0)
                        {
                            result += GetStr(gwNum);
                        }
                    }
    
                    if ((index - i) != 0)
                    {
                        result += string.Format(Splite_Place, dicPlace[index - i]);
                    }
                }
    
                if (pointIndex != -1)
                {
                    if (result != "")
                    {
                        result += " ";
                    }
                    result += Splite_Point;
                    
                    for (int i = 0; i &lt; dec.Length; i++)
                    {
                        result += " " + GetStr(int.Parse(dec.Substring(i, 1)));
                    }
                }
    
                result += " dollar";
    
                Console.WriteLine(result);
                Console.Read();
            }
    
            private static string GetStr(int gwNum)
            {
                return string.Format(Unit_Tens_Place, dicUnit[gwNum]);
            }
    
            private static string GetStr(int swNum, int gwNum)
            {
                string r = "";
                
                if (swNum &gt; 1)
                {
                    r += Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10]);
                    if (gwNum != 0)
                    {
                        r += Splite_Tens_Unit + string.Format(Unit_Tens_Place, dicUnit[gwNum]);
                    }
                }
                else if (swNum &gt; 0 &amp;&amp; swNum &lt;= 1)
                {
                    r = Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10 + gwNum]);
                }
                else if (swNum == 0 &amp;&amp; gwNum &gt; 0)
                {
                    r += Splite_Hundreds_Tens + GetStr(gwNum);
                }
                return r;
            }
    
            private static string GetStr(int bwNum, int swNum, int gwNum)
            {
                string r = "";
    
                if (bwNum &gt; 0)
                {
                    r = string.Format(Hundreds_Place, dicUnit[bwNum]);
                }
                return r += GetStr(swNum, gwNum);
            }
    
    
    
            private static void initDic()
            {
                dicUnit = new Dictionary&lt;int, string&gt;();
                dicUnit.Add(0, "zero");
                dicUnit.Add(1, "one");
                dicUnit.Add(2, "two");
                dicUnit.Add(3, "three");
                dicUnit.Add(4, "four");
                dicUnit.Add(5, "five");
                dicUnit.Add(6, "six");
                dicUnit.Add(7, "seven");
                dicUnit.Add(8, "eight");
                dicUnit.Add(9, "nine");
                dicUnit.Add(10, "ten");
                dicUnit.Add(11, "eleven");
                dicUnit.Add(12, "twelve");
                dicUnit.Add(13, "thirteen");
                dicUnit.Add(14, "fourteen");
                dicUnit.Add(15, "fifteen
    /*
     * by:stefanie 
     * date:2009-12-04
     */
    
    namespace ConsoleApplication1
    {
        using System;
        using System.Collections.Generic;
        using System.Text;
    
        class Program
        {
           private static Dictionary<int, string> dicUnit;
           private static Dictionary<int, string> dicPlace;
    
           static string Splite_Place = " {0} ";
           static string Splite_Hundreds_Tens = " and ";
           static string Splite_Tens_Unit = "-";
           static string Splite_Point = "point";
    
            //template
           static string Unit_Tens_Place = "{0}";//20,30,40...90
           static string Hundreds_Place = "{0} hundred";
    
            static void Main(string[] args)
            {
                initDic();
                string result = "";
                Console.WriteLine("Please input a Number:");
                string input = Console.ReadLine();
                int pointIndex =input.IndexOf('.');
                string integer = input;
                string dec ="";
                if(pointIndex != -1 )
                {
                    integer = input.Substring(0, pointIndex);
                    dec = input.Substring(pointIndex + 1);
                }
              
                int len = integer.Length;
                if (len > 15)
                {
                    Console.WriteLine("Input number is too long");
                    return;
                }
    
                int index = (len - 1) / 3;
                int bwNum, swNum, gwNum;
                string str;
                for (int i = 0; i <= index; i++)
                {
                    str = integer.Substring(i*3);
                    if (str.Length > 3)
                    {
                        str = integer.Substring(i * 3, 3);
                    }
                  
                    if (str.Length == 3)
                    {
                        bwNum = int.Parse(str.Substring(0, 1));
                        swNum = int.Parse(str.Substring(1, 1));
                        gwNum = int.Parse(str.Substring(2, 1));
                        result += GetStr(bwNum, swNum, gwNum);
                    }
                    else if (len == 2)
                    {
                        swNum = int.Parse(str.Substring(0, 1));
                        gwNum = int.Parse(str.Substring(1, 1));
                        result += GetStr(swNum, gwNum);
                    }
                    else if (len == 1)
                    {
                        gwNum = int.Parse(str.Substring(0, 1));
                        if (gwNum != 0)
                        {
                            result += GetStr(gwNum);
                        }
                    }
    
                    if ((index - i) != 0)
                    {
                        result += string.Format(Splite_Place, dicPlace[index - i]);
                    }
                }
    
                if (pointIndex != -1)
                {
                    if (result != "")
                    {
                        result += " ";
                    }
                    result += Splite_Point;
                    
                    for (int i = 0; i < dec.Length; i++)
                    {
                        result += " " + GetStr(int.Parse(dec.Substring(i, 1)));
                    }
                }
    
                result += " dollar";
    
                Console.WriteLine(result);
                Console.Read();
            }
    
            private static string GetStr(int gwNum)
            {
                return string.Format(Unit_Tens_Place, dicUnit[gwNum]);
            }
    
            private static string GetStr(int swNum, int gwNum)
            {
                string r = "";
                
                if (swNum > 1)
                {
                    r += Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10]);
                    if (gwNum != 0)
                    {
                        r += Splite_Tens_Unit + string.Format(Unit_Tens_Place, dicUnit[gwNum]);
                    }
                }
                else if (swNum > 0 && swNum <= 1)
                {
                    r = Splite_Hundreds_Tens + string.Format(Unit_Tens_Place, dicUnit[swNum * 10 + gwNum]);
                }
                else if (swNum == 0 && gwNum > 0)
                {
                    r += Splite_Hundreds_Tens + GetStr(gwNum);
                }
                return r;
            }
    
            private static string GetStr(int bwNum, int swNum, int gwNum)
            {
                string r = "";
    
                if (bwNum > 0)
                {
                    r = string.Format(Hundreds_Place, dicUnit[bwNum]);
                }
                return r += GetStr(swNum, gwNum);
            }
    
    
    
            private static void initDic()
            {
                dicUnit = new Dictionary<int, string>();
                dicUnit.Add(0, "zero");
                dicUnit.Add(1, "one");
                dicUnit.Add(2, "two");
                dicUnit.Add(3, "three");
                dicUnit.Add(4, "four");
                dicUnit.Add(5, "five");
                dicUnit.Add(6, "six");
                dicUnit.Add(7, "seven");
                dicUnit.Add(8, "eight");
                dicUnit.Add(9, "nine");
                dicUnit.Add(10, "ten");
                dicUnit.Add(11, "eleven");
                dicUnit.Add(12, "twelve");
                dicUnit.Add(13, "thirteen");
                dicUnit.Add(14, "fourteen");
                dicUnit.Add(15, "fifteen");
                dicUnit.Add(16, "sixteen");
                dicUnit.Add(17, "seventeen");
                dicUnit.Add(18, "eighteen");
                dicUnit.Add(19, "nineteen");
                dicUnit.Add(20, "twenty");
                dicUnit.Add(30, "thirty");
                dicUnit.Add(40, "forty");
                dicUnit.Add(50, "fifteen");
                dicUnit.Add(60, "sixteen");
                dicUnit.Add(70, "seventeen");
                dicUnit.Add(80, "eighteen");
                dicUnit.Add(90, "nineteen");
    
    
                dicPlace = new Dictionary<int,string>();
                dicPlace.Add(0, "");
                dicPlace.Add(1, "thousand");
                dicPlace.Add(2, "million");
                dicPlace.Add(3, "billion");
                dicPlace.Add(4, "trillion");
            }
        }
    }
    ");
                dicUnit.Add(16, "sixteen");
                dicUnit.Add(17, "seventeen");
                dicUnit.Add(18, "eighteen");
                dicUnit.Add(19, "nineteen");
                dicUnit.Add(20, "twenty");
                dicUnit.Add(30, "thirty");
                dicUnit.Add(40, "forty");
                dicUnit.Add(50, "fifteen");
                dicUnit.Add(60, "sixteen");
                dicUnit.Add(70, "seventeen");
                dicUnit.Add(80, "eighteen");
                dicUnit.Add(90, "nineteen");
    
    
                dicPlace = new Dictionary&lt;int,string&gt;();
                dicPlace.Add(0, "");
                dicPlace.Add(1, "thousand");
                dicPlace.Add(2, "million");
                dicPlace.Add(3, "billion");
                dicPlace.Add(4, "trillion");
            }
        }
    }</PRE>
  • 相关阅读:
    数据结构与算法之美-二分查找(下)
    数据结构与算法之美-二分查找(上)
    数据结构与算法之美-排序优化
    数据结构与算法之美-线性排序
    DRF框架之路由Routers
    DRF框架之视图集(ModelViewSet)简介
    DRF框架之视图子类简介
    DRF框架之视图的扩展类简介
    DRF框架之视图基类APIView和GenericAPIView简介
    DRF框架之ModelSerializer序列化器
  • 原文地址:https://www.cnblogs.com/wpsl5168/p/1617115.html
Copyright © 2020-2023  润新知