人民币大小写转换
View Code
下载:通用人民币转换类
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 /// <summary>
12 ///EcanRMB 的摘要说明
13 /// </summary>
14 public class EcanRMB
15 {
16 public EcanRMB()
17 {
18 //
19 //TODO: 在此处添加构造函数逻辑
20 //
21 }
22 /// <summary>
23 /// 转换人民币大小金额
24 /// </summary>
25 /// <param name="num">金额</param>
26 /// <returns>返回大写形式</returns>
27 public string CmycurD(decimal num)
28 {
29 string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
30 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
31 string str3 = ""; //从原num值中取出的值
32 string str4 = ""; //数字的字符串形式
33 string str5 = ""; //人民币大写金额形式
34 int i; //循环变量
35 int j; //num的值乘以100的字符串长度
36 string ch1 = ""; //数字的汉语读法
37 string ch2 = ""; //数字位的汉字读法
38 int nzero = 0; //用来计算连续的零值是几个
39 int temp; //从原num值中取出的值
40
41 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
42 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
43 j = str4.Length; //找出最高位
44 if (j > 15) { return "溢出"; }
45 str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
46
47 //循环取出每一位需要转换的值
48 for (i = 0; i < j; i++)
49 {
50 str3 = str4.Substring(i, 1); //取出需转换的某一位的值
51 temp = Convert.ToInt32(str3); //转换为数字
52 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
53 {
54 //当所取位数不为元、万、亿、万亿上的数字时
55 if (str3 == "0")
56 {
57 ch1 = "";
58 ch2 = "";
59 nzero = nzero + 1;
60 }
61 else
62 {
63 if (str3 != "0" && nzero != 0)
64 {
65 ch1 = "零" + str1.Substring(temp * 1, 1);
66 ch2 = str2.Substring(i, 1);
67 nzero = 0;
68 }
69 else
70 {
71 ch1 = str1.Substring(temp * 1, 1);
72 ch2 = str2.Substring(i, 1);
73 nzero = 0;
74 }
75 }
76 }
77 else
78 {
79 //该位是万亿,亿,万,元位等关键位
80 if (str3 != "0" && nzero != 0)
81 {
82 ch1 = "零" + str1.Substring(temp * 1, 1);
83 ch2 = str2.Substring(i, 1);
84 nzero = 0;
85 }
86 else
87 {
88 if (str3 != "0" && nzero == 0)
89 {
90 ch1 = str1.Substring(temp * 1, 1);
91 ch2 = str2.Substring(i, 1);
92 nzero = 0;
93 }
94 else
95 {
96 if (str3 == "0" && nzero >= 3)
97 {
98 ch1 = "";
99 ch2 = "";
100 nzero = nzero + 1;
101 }
102 else
103 {
104 if (j >= 11)
105 {
106 ch1 = "";
107 nzero = nzero + 1;
108 }
109 else
110 {
111 ch1 = "";
112 ch2 = str2.Substring(i, 1);
113 nzero = nzero + 1;
114 }
115 }
116 }
117 }
118 }
119 if (i == (j - 11) || i == (j - 3))
120 {
121 //如果该位是亿位或元位,则必须写上
122 ch2 = str2.Substring(i, 1);
123 }
124 str5 = str5 + ch1 + ch2;
125
126 if (i == j - 1 && str3 == "0")
127 {
128 //最后一位(分)为0时,加上"整"
129 str5 = str5 + '整';
130 }
131 }
132 if (num == 0)
133 {
134 str5 = "零元整";
135 }
136 return str5;
137 }
138
139 /**/
140 /// <summary>
141 /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num)
142 /// </summary>
143 /// <param name="num">用户输入的金额,字符串形式未转成decimal</param>
144 /// <returns></returns>
145 public string CmycurD(string numstr)
146 {
147 try
148 {
149 decimal num = Convert.ToDecimal(numstr);
150 return CmycurD(num);
151 }
152 catch
153 {
154 return "非数字形式!";
155 }
156 }
157
158 }
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 /// <summary>
12 ///EcanRMB 的摘要说明
13 /// </summary>
14 public class EcanRMB
15 {
16 public EcanRMB()
17 {
18 //
19 //TODO: 在此处添加构造函数逻辑
20 //
21 }
22 /// <summary>
23 /// 转换人民币大小金额
24 /// </summary>
25 /// <param name="num">金额</param>
26 /// <returns>返回大写形式</returns>
27 public string CmycurD(decimal num)
28 {
29 string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
30 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
31 string str3 = ""; //从原num值中取出的值
32 string str4 = ""; //数字的字符串形式
33 string str5 = ""; //人民币大写金额形式
34 int i; //循环变量
35 int j; //num的值乘以100的字符串长度
36 string ch1 = ""; //数字的汉语读法
37 string ch2 = ""; //数字位的汉字读法
38 int nzero = 0; //用来计算连续的零值是几个
39 int temp; //从原num值中取出的值
40
41 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
42 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
43 j = str4.Length; //找出最高位
44 if (j > 15) { return "溢出"; }
45 str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
46
47 //循环取出每一位需要转换的值
48 for (i = 0; i < j; i++)
49 {
50 str3 = str4.Substring(i, 1); //取出需转换的某一位的值
51 temp = Convert.ToInt32(str3); //转换为数字
52 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
53 {
54 //当所取位数不为元、万、亿、万亿上的数字时
55 if (str3 == "0")
56 {
57 ch1 = "";
58 ch2 = "";
59 nzero = nzero + 1;
60 }
61 else
62 {
63 if (str3 != "0" && nzero != 0)
64 {
65 ch1 = "零" + str1.Substring(temp * 1, 1);
66 ch2 = str2.Substring(i, 1);
67 nzero = 0;
68 }
69 else
70 {
71 ch1 = str1.Substring(temp * 1, 1);
72 ch2 = str2.Substring(i, 1);
73 nzero = 0;
74 }
75 }
76 }
77 else
78 {
79 //该位是万亿,亿,万,元位等关键位
80 if (str3 != "0" && nzero != 0)
81 {
82 ch1 = "零" + str1.Substring(temp * 1, 1);
83 ch2 = str2.Substring(i, 1);
84 nzero = 0;
85 }
86 else
87 {
88 if (str3 != "0" && nzero == 0)
89 {
90 ch1 = str1.Substring(temp * 1, 1);
91 ch2 = str2.Substring(i, 1);
92 nzero = 0;
93 }
94 else
95 {
96 if (str3 == "0" && nzero >= 3)
97 {
98 ch1 = "";
99 ch2 = "";
100 nzero = nzero + 1;
101 }
102 else
103 {
104 if (j >= 11)
105 {
106 ch1 = "";
107 nzero = nzero + 1;
108 }
109 else
110 {
111 ch1 = "";
112 ch2 = str2.Substring(i, 1);
113 nzero = nzero + 1;
114 }
115 }
116 }
117 }
118 }
119 if (i == (j - 11) || i == (j - 3))
120 {
121 //如果该位是亿位或元位,则必须写上
122 ch2 = str2.Substring(i, 1);
123 }
124 str5 = str5 + ch1 + ch2;
125
126 if (i == j - 1 && str3 == "0")
127 {
128 //最后一位(分)为0时,加上"整"
129 str5 = str5 + '整';
130 }
131 }
132 if (num == 0)
133 {
134 str5 = "零元整";
135 }
136 return str5;
137 }
138
139 /**/
140 /// <summary>
141 /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num)
142 /// </summary>
143 /// <param name="num">用户输入的金额,字符串形式未转成decimal</param>
144 /// <returns></returns>
145 public string CmycurD(string numstr)
146 {
147 try
148 {
149 decimal num = Convert.ToDecimal(numstr);
150 return CmycurD(num);
151 }
152 catch
153 {
154 return "非数字形式!";
155 }
156 }
157
158 }
多思考,多创新,才是正道!