本文實例講述了C#實現將浮點數表示的貨幣數量以漢字大寫形式輸出的方法。分享給大家供大家參考。具體如下:
1.函數代碼
注:本段代碼中能轉化的最大的數為(1億億-0.01),如果要轉化更大的浮點數,則需要做適當修改。
/// <summary>/// 將字符型變量轉化為大寫漢語數字/// </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>/// 把數字轉換為大寫數字/// </summary>/// <param name="n"></param>/// <returns></returns>private static string RMBToChr(double n){ //保留小數點后兩位數字 string sMoney = n.ToString("#0.00"); StringBuilder sbResult = new StringBuilder(); for (int i = 0; i < sMoney.Length; i++) { //遇到小數點,則后面 A.XX 寫為 A圓X角X分 if (sMoney[i] == '.') { sbResult.Append("圓"); //角和分屬性都為0時直接寫整字 if (sMoney[i + 1] == '0' && sMoney[i + 2] == '0') { sbResult.Append("整"); break; } else { //角和分屬性只有在對應位不為0時才寫 if (sMoney[i + 1] != '0') { sbResult.Append(NumToChr(sMoney[i + 1]) + "角"); } if (sMoney[i + 2] != '0') { sbResult.Append(NumToChr(sMoney[i + 2]) + "分"); } else //分為0時也要寫整字 { sbResult.Append("整"); } break; } } //非零數字直接輸出對應數字和位 if (sMoney[i] != '0') { sbResult.Append(NumToChr(sMoney[i])); //補上相應位的權 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("這個數太大了!"); } } else //如果該位數字為0,則萬位和億位要寫權,多個連續0就寫一個零 { 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函數調用
static void Main(string[] args){ //數字轉化為人民幣大寫 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.運行示例
希望本文所述對大家的C#程序設計有所幫助。
新聞熱點
疑難解答