C#实现将浮点数表示的货币数量以汉字大写形式输出的方法
程序员文章站
2023-12-03 17:00:40
本文实例讲述了c#实现将浮点数表示的货币数量以汉字大写形式输出的方法。分享给大家供大家参考。具体如下:
1.函数代码
注:本段代码中能转化的最大的数为(1亿亿-0.01...
本文实例讲述了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#程序设计有所帮助。
下一篇: SQL一条语句统计记录总数及各状态数