最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#把數(shù)字轉(zhuǎn)換成大寫金額的代碼實例

 更新時間:2014年05月27日 10:47:46   作者:  
這篇文章主要介紹了C#把數(shù)字轉(zhuǎn)換成大寫金額的代碼實例,例如把200轉(zhuǎn)換成“貳佰元”,需要的朋友可以參考下

實現(xiàn)代碼:

復(fù)制代碼 代碼如下:

// 例如:(new Money(200)).ToString() == "貳佰元"
namespace Skyiv.Util {
    using System.Text;
    class Test {
        static void Main() {
            for (;;) {
                System.Console.Write("金額: ");
                string s = System.Console.ReadLine();
                decimal m;
                try {
                    m = decimal.Parse(s);
                } catch {
                    break;
                }
                System.Console.WriteLine("大寫: " + new Money(m));
            }
        }
    }
    // 該類重載的 ToString() 方法返回的是大寫金額字符串
    class Money {
        public string Yuan = "元"; // “元”,可以改為“圓”、“盧布”之類
        public string Jiao = "角"; // “角”,可以改為“拾”
        public string Fen = "分"; // “分”,可以改為“美分”之類
        static string Digit = "零壹貳叁肆伍陸柒捌玖"; // 大寫數(shù)字
        bool isAllZero = true; // 片段內(nèi)是否全零
        bool isPreZero = true; // 低一位數(shù)字是否是零
        bool Overflow = false; // 溢出標志
        long money100; // 金額*100,即以“分”為單位的金額
        long value; // money100的絕對值
        StringBuilder sb = new StringBuilder(); // 大寫金額字符串,逆序
        // 只讀屬性: "零元"
        public string ZeroString {
            get {
                return Digit[0] + Yuan;
            }
        }
        // 構(gòu)造函數(shù)
        public Money(decimal money) {
            try {
                money100 = (long)(money * 100m);
            } catch {
                Overflow = true;
            }
            if (money100 == long.MinValue) Overflow = true;
        }
        // 重載 ToString() 方法,返回大寫金額字符串
        public override string ToString() {
            if (Overflow) return "金額超出范圍";
            if (money100 == 0) return ZeroString;
            string[] Unit = {
                Yuan,
                "萬",
                "億",
                "萬",
                "億億"
            };
            value = System.Math.Abs(money100);
            ParseSection(true);
            for (int i = 0; i < Unit.Length && value > 0; i++) {
                if (isPreZero && !isAllZero) sb.Append(Digit[0]);
                if (i == 4 && sb.ToString().EndsWith(Unit[2])) sb.Remove(sb.Length - Unit[2].Length, Unit[2].Length);
                sb.Append(Unit[i]);
                ParseSection(false);
                if ((i % 2) == 1 && isAllZero) sb.Remove(sb.Length - Unit[i].Length, Unit[i].Length);
            }
            if (money100 < 0) sb.Append("負");
            return Reverse();
        }
        // 解析“片段”: “角分(2位)”或“萬以內(nèi)的一段(4位)”
        void ParseSection(bool isJiaoFen) {
            string[] Unit = isJiaoFen ? new string[] {
                Fen,
                Jiao
            }: new string[] {
                "",
                "拾",
                "佰",
                "仟"
            };
            isAllZero = true;
            for (int i = 0; i < Unit.Length && value > 0; i++) {
                int d = (int)(value % 10);
                if (d != 0) {
                    if (isPreZero && !isAllZero) sb.Append(Digit[0]);
                    sb.AppendFormat("{0}{1}", Unit[i], Digit[d]);
                    isAllZero = false;
                }
                isPreZero = (d == 0);
                value /= 10;
            }
        }
        // 反轉(zhuǎn)字符串
        string Reverse() {
            StringBuilder sbReversed = new StringBuilder();
            for (int i = sb.Length - 1; i >= 0; i--) sbReversed.Append(sb[i]);
            return sbReversed.ToString();
        }
    }
}

相關(guān)文章

  • C#訪問及調(diào)用類中私有成員與方法示例代碼

    C#訪問及調(diào)用類中私有成員與方法示例代碼

    訪問一個類的私有成員不是什么好做法,大家也都知道私有成員在外部是不能被訪問的,這篇文章主要給大家介紹了關(guān)于C#訪問及調(diào)用類中私有成員與方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-06-06
  • c# 開發(fā)語音識別程序

    c# 開發(fā)語音識別程序

    這篇文章主要介紹了用c# 開發(fā)語音識別程序,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-09-09
  • 詳解C# Socket編程筆記

    詳解C# Socket編程筆記

    這篇文章主要介紹了詳解C# Socket編程筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2016-12-12
  • unity 如何修改材質(zhì)屬性和更換shader

    unity 如何修改材質(zhì)屬性和更換shader

    這篇文章主要介紹了unity 修改材質(zhì)屬性和更換shader的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#橋接模式完整實例

    C#橋接模式完整實例

    這篇文章主要介紹了C#橋接模式,以實例形式較為詳細的分析了C#橋接模式的實現(xiàn)原理與相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法示例

    C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法示例

    這篇文章主要介紹了C#實現(xiàn)將Doc文檔轉(zhuǎn)換成rtf格式的方法,結(jié)合實例形式分析了C#針對word文件的讀取及文檔格式轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • Unity3D使用陀螺儀控制節(jié)點旋轉(zhuǎn)

    Unity3D使用陀螺儀控制節(jié)點旋轉(zhuǎn)

    這篇文章主要為大家詳細介紹了Unity3D使用陀螺儀控制節(jié)點旋轉(zhuǎn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C# 拓展方法的簡單實例

    C# 拓展方法的簡單實例

    這篇文章介紹了C# 拓展方法的簡單實例,有需要的朋友可以參考一下
    2013-08-08
  • c# 如何實現(xiàn)獲取二維數(shù)組的列數(shù)

    c# 如何實現(xiàn)獲取二維數(shù)組的列數(shù)

    這篇文章主要介紹了c# 實現(xiàn)獲取二維數(shù)組的列數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#遍歷文件夾及子目錄下所有圖片

    C#遍歷文件夾及子目錄下所有圖片

    這篇文章主要為大家詳細介紹了C# 遍歷文件夾及子目錄下所有圖片的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論

射洪县| 玉溪市| 岳普湖县| 长春市| 八宿县| 嘉兴市| 临漳县| 平山县| 玉门市| 镶黄旗| 垫江县| 兴海县| 泊头市| 舞阳县| 淮安市| 龙胜| 曲麻莱县| 哈密市| 会理县| 咸阳市| 本溪| 思茅市| 福贡县| 紫阳县| 华宁县| 桐乡市| 威远县| 永清县| 遂溪县| 乌恰县| 永安市| 泗水县| 克山县| 桂阳县| 漳平市| 乾安县| 治多县| 南昌市| 云南省| 绥滨县| 泗阳县|