RMB 金额数字转换成大写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/// <summary>
       /// 转换人民币大小金额
       /// </summary>
       /// <param name="num">金额</param>
       /// <returns>返回大写形式</returns>
       public static string CmycurD(decimal num)
       {
           string str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字
           string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
           string str3 = "";    //从原num值中取出的值
           string str4 = "";    //数字的字符串形式
           string str5 = ""//人民币大写金额形式
           int i;    //循环变量
           int j;    //num的值乘以100的字符串长度
           string ch1 = "";    //数字的汉语读法
           string ch2 = "";    //数字位的汉字读法
           int nzero = 0;  //用来计算连续的零值是几个
           int temp;            //从原num值中取出的值
 
           num = Math.Round(Math.Abs(num), 2);    //将num取绝对值并四舍五入取2位小数
           str4 = ((long)(num * 100)).ToString();        //将num乘100并转换成字符串形式
           j = str4.Length;      //找出最高位
           if (j > 15) { return "溢出"; }
           str2 = str2.Substring(15 - j);   //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
 
           //循环取出每一位需要转换的值
           for (i = 0; i < j; i++)
           {
               str3 = str4.Substring(i, 1);          //取出需转换的某一位的值
               temp = Convert.ToInt32(str3);      //转换为数字
               if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
               {
                   //当所取位数不为元、万、亿、万亿上的数字时
                   if (str3 == "0")
                   {
                       ch1 = "";
                       ch2 = "";
                       nzero = nzero + 1;
                   }
                   else
                   {
                       if (str3 != "0" && nzero != 0)
                       {
                           ch1 = "零" + str1.Substring(temp * 1, 1);
                           ch2 = str2.Substring(i, 1);
                           nzero = 0;
                       }
                       else
                       {
                           ch1 = str1.Substring(temp * 1, 1);
                           ch2 = str2.Substring(i, 1);
                           nzero = 0;
                       }
                   }
               }
               else
               {
                   //该位是万亿,亿,万,元位等关键位
                   if (str3 != "0" && nzero != 0)
                   {
                       ch1 = "零" + str1.Substring(temp * 1, 1);
                       ch2 = str2.Substring(i, 1);
                       nzero = 0;
                   }
                   else
                   {
                       if (str3 != "0" && nzero == 0)
                       {
                           ch1 = str1.Substring(temp * 1, 1);
                           ch2 = str2.Substring(i, 1);
                           nzero = 0;
                       }
                       else
                       {
                           if (str3 == "0" && nzero >= 3)
                           {
                               ch1 = "";
                               ch2 = "";
                               nzero = nzero + 1;
                           }
                           else
                           {
                               if (j >= 11)
                               {
                                   ch1 = "";
                                   nzero = nzero + 1;
                               }
                               else
                               {
                                   ch1 = "";
                                   ch2 = str2.Substring(i, 1);
                                   nzero = nzero + 1;
                               }
                           }
                       }
                   }
               }
               if (i == (j - 11) || i == (j - 3))
               {
                   //如果该位是亿位或元位,则必须写上
                   ch2 = str2.Substring(i, 1);
               }
               str5 = str5 + ch1 + ch2;
 
               if (i == j - 1 && str3 == "0")
               {
                   //最后一位(分)为0时,加上“整”
                   str5 = str5 + '整';
               }
           }
           if (num == 0)
           {
               str5 = "零元整";
           }
           return str5;
       }

  

posted @   探索的动机  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示