C#實(shí)現(xiàn)將浮點(diǎn)數(shù)表示的貨幣數(shù)量以漢字大寫形式輸出的方法
本文實(shí)例講述了C#實(shí)現(xiàn)將浮點(diǎn)數(shù)表示的貨幣數(shù)量以漢字大寫形式輸出的方法。分享給大家供大家參考。具體如下:
1.函數(shù)代碼
注:本段代碼中能轉(zhuǎn)化的最大的數(shù)為(1億億-0.01),如果要轉(zhuǎn)化更大的浮點(diǎn)數(shù),則需要做適當(dāng)修改。
/// <summary> /// 將字符型變量轉(zhuǎn)化為大寫漢語數(shù)字 /// </summary> /// <param name="ch">字符 '0'~'9'</param> /// <returns></returns> private static string NumToChr(char ch) { switch (ch) { case '0': return "零"; case '1': return "壹"; case '2': return "貳"; case '3': return "叁"; case '4': return "肆"; case '5': return "伍"; case '6': return "陸"; case '7': return "柒"; case '8': return "捌"; case '9': return "玖"; default: return ""; } } /// <summary> /// 把數(shù)字轉(zhuǎn)換為大寫數(shù)字 /// </summary> /// <param name="n"></param> /// <returns></returns> private static string RMBToChr(double n) { //保留小數(shù)點(diǎn)后兩位數(shù)字 string sMoney = n.ToString("#0.00"); StringBuilder sbResult = new StringBuilder(); for (int i = 0; i < sMoney.Length; i++) { //遇到小數(shù)點(diǎn),則后面 A.XX 寫為 A圓X角X分 if (sMoney[i] == '.') { sbResult.Append("圓"); //角和分屬性都為0時(shí)直接寫整字 if (sMoney[i + 1] == '0' && sMoney[i + 2] == '0') { sbResult.Append("整"); break; } else { //角和分屬性只有在對(duì)應(yīng)位不為0時(shí)才寫 if (sMoney[i + 1] != '0') { sbResult.Append(NumToChr(sMoney[i + 1]) + "角"); } if (sMoney[i + 2] != '0') { sbResult.Append(NumToChr(sMoney[i + 2]) + "分"); } else //分為0時(shí)也要寫整字 { sbResult.Append("整"); } break; } } //非零數(shù)字直接輸出對(duì)應(yīng)數(shù)字和位 if (sMoney[i] != '0') { sbResult.Append(NumToChr(sMoney[i])); //補(bǔ)上相應(yīng)位的權(quán) int temp = sMoney.Length - 4 - i; switch (temp) { case 0: break; case 1: sbResult.Append("拾"); break; case 2: sbResult.Append("佰"); break; case 3: sbResult.Append("仟"); break; case 4: sbResult.Append("萬"); break; case 5: sbResult.Append("拾"); break; case 6: sbResult.Append("佰"); break; case 7: sbResult.Append("仟"); break; case 8: sbResult.Append("億"); break; case 9: sbResult.Append("拾"); break; case 10: sbResult.Append("百"); break; case 11: sbResult.Append("仟"); break; case 12: sbResult.Append("萬"); break; default: throw new Exception("這個(gè)數(shù)太大了!"); } } else //如果該位數(shù)字為0,則萬位和億位要寫權(quán),多個(gè)連續(xù)0就寫一個(gè)零 { int temp = sMoney.Length - 4 - i; if (temp == 4) { sbResult.Append("萬"); continue; } else if (temp == 8) { sbResult.Append("億"); continue; } else if (sMoney[i + 1] == '0') { continue; } else sbResult.Append("零"); } } return sbResult.ToString(); }
2.Main函數(shù)調(diào)用
static void Main(string[] args) { //數(shù)字轉(zhuǎn)化為人民幣大寫 Console.WriteLine(RMBToChr(12345)); Console.WriteLine(RMBToChr(60001.215)); Console.WriteLine(RMBToChr(70010001.8)); Console.WriteLine(RMBToChr(10110901.01)); Console.WriteLine(RMBToChr(0.01)); Console.ReadLine(); }
3.運(yùn)行示例
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#基于WebSocket實(shí)現(xiàn)聊天室功能
這篇文章主要為大家詳細(xì)介紹了C#基于WebSocket實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名
這篇文章主要介紹了C#實(shí)現(xiàn)根據(jù)銀行卡卡號(hào)判斷銀行名,是從其他網(wǎng)友的java程序改編而來,有需要的小伙伴可以參考下。2015-07-07C# Winform實(shí)現(xiàn)波浪滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了C# Winform實(shí)現(xiàn)波浪滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11C# SqlHelper應(yīng)用開發(fā)學(xué)習(xí)
這篇文章主要和大家一起學(xué)習(xí)C# SqlHelper應(yīng)用開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Unity編輯器資源導(dǎo)入處理函數(shù)OnPreprocessAudio用法示例
這篇文章主要為大家介紹了Unity編輯器資源導(dǎo)入處理函數(shù)OnPreprocessAudio用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08基于NPOI用C#開發(fā)的Excel以及表格設(shè)置
這篇文章主要為大家詳細(xì)介紹了基于NPOI用C#開發(fā)的Excel以及表格設(shè)置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02