1
//数字转换称大写#region//数字转换称大写
2
public static string GetThousandNumberName(string p_strThousandNumberName)
3
{
4
string v_strThousand = p_strThousandNumberName;
5
string v_strThousandNumberName = "";
6
if (v_strThousand.Length == 1)
7
v_strThousand = "000" + v_strThousand;
8
if (v_strThousand.Length == 2)
9
v_strThousand = "00" + v_strThousand;
10
if (v_strThousand.Length == 3)
11
v_strThousand = "0" + v_strThousand;
12
13
for (int i = 0; i < v_strThousand.Length; i++)
14
{
15
if (i == 0 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
16
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "千";
17
if (i == 1 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
18
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "百";
19
else
20
if (i == 1 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)
21
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
22
if (i == 2 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
23
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()) * 10);
24
else
25
if (i == 2 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)
26
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
27
if (i == 3 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
28
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
29
}
30
return v_strThousandNumberName;
31
}
32
public static string GetUpperNumber(string p_strThousandNumberName)
33
{
34
string v_strThousand = p_strThousandNumberName;
35
string v_strThousandNumberName = "";
36
if (v_strThousand.Length == 1)
37
v_strThousand = "000" + v_strThousand;
38
if (v_strThousand.Length == 2)
39
v_strThousand = "00" + v_strThousand;
40
if (v_strThousand.Length == 3)
41
v_strThousand = "0" + v_strThousand;
42
int dotnum = 100;
43
for (int i = 0; i < v_strThousand.Length; i++)
44
{
45
if (v_strThousand[i].ToString() == ".")
46
{
47
dotnum = i;
48
}
49
else if (dotnum < i)
50
{
51
if ((dotnum + 1) == i && Convert.ToInt32(v_strThousand[i].ToString())!=0)
52
{
53
v_strThousandNumberName = v_strThousandNumberName +"元"+ GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "角";
54
}
55
if ((dotnum + 2) == i && Convert.ToInt32(v_strThousand[i].ToString())!=0)
56
{
57
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "分";
58
}
59
}
60
else
61
{
62
if (i == 0 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
63
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "千";
64
if (i == 1 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
65
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "百";
66
else
67
if (i == 1 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)
68
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
69
if (i == 2 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
70
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()) * 10);
71
else
72
if (i == 2 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)
73
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
74
if (i == 3 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)
75
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));
76
}
77
78
}
79
return v_strThousandNumberName;
80
81
}
82
public static string convertToChineseMoney(decimal num)
83
{
84
string strChina = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
85
string strUnit = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
86
string strSingleNum = ""; //从原num值中取出的值
87
string strNum = ""; //数字的字符串形式
88
string strResult = ""; //人民币大写金额形式
89
string chChina = ""; //数字的汉语读法
90
string chUnit = ""; //数字位的汉语读法
91
92
int i; //循环变量
93
int lenth; //num的值乘以100的字符串长度
94
int nZero = 0; //用来计算连续的零值是几个
95
int temp; //从原num值中取出的值
96
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
97
strNum = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
98
lenth = strNum.Length; //找出最高位
99
100
if (lenth > 15)
101
{
102
return "位数过大,无法转换!";
103
}
104
//取出对应位数的strUnit的值。如:200.55,lenth为5所以strUnit=佰拾元角分
105
strUnit = strUnit.Substring(15 - lenth);
106
//循环取出每一位需要转换的值
107
for (i = 0; i < lenth; i++)
108
{
109
strSingleNum = strNum.Substring(i, 1); //取出需转换的某一位的值
110
temp = Convert.ToInt32(strSingleNum); //转换为数字
111
if (i != (lenth - 3) && i != (lenth - 7) && i != (lenth - 11) && i != (lenth - 15))
112
{
113
//当所取位数不为元、万、亿、万亿上的数字时
114
if (strSingleNum == "0")
115
{
116
chChina = "";
117
chUnit = "";
118
nZero = nZero + 1;
119
}
120
else
121
{
122
if (strSingleNum != "0" && nZero != 0)
123
{
124
chChina = "零" + strChina.Substring(temp, 1);
125
chUnit = strUnit.Substring(i, 1);
126
nZero = 0;
127
}
128
else
129
{
130
chChina = strChina.Substring(temp, 1);
131
chUnit = strUnit.Substring(i, 1);
132
nZero = 0;
133
}
134
}
135
}
136
else
137
{
138
//该位是万亿,亿,万,元位等关键位
139
if (strSingleNum != "0" && nZero != 0)
140
{
141
chChina = "零" + strChina.Substring(temp, 1);
142
chUnit = strUnit.Substring(i, 1);
143
nZero = 0;
144
}
145
else
146
{
147
if (strSingleNum != "0" && nZero == 0)
148
{
149
chChina = strChina.Substring(temp, 1);
150
chUnit = strUnit.Substring(i, 1);
151
nZero = 0;
152
}
153
else
154
{
155
if (strSingleNum == "0" && nZero >= 3)
156
{
157
chChina = "";
158
chUnit = "";
159
nZero = nZero + 1;
160
}
161
else
162
{
163
if (lenth >= 11)
164
{
165
chChina = "";
166
nZero = nZero + 1;
167
}
168
else
169
{
170
chChina = "";
171
chUnit = strUnit.Substring(i, 1);
172
nZero = nZero + 1;
173
}
174
}
175
}
176
}
177
}
178
179
if (i == (lenth - 11) || i == (lenth - 3))
180
{
181
//如果该位是亿位或元位,则必须写上
182
chUnit = strUnit.Substring(i, 1);
183
}
184
185
strResult = strResult + chChina + chUnit;
186
if (i == lenth - 1 && strSingleNum == "0")
187
{
188
//最后一位(分)为0时,加上“整”
189
strResult = strResult + '整';
190
}
191
}
192
if (num == 0)
193
{
194
strResult = "零元整";
195
}
196
197
return strResult;
198
}
199
200
public static string GetInvertingNumberName(string p_strIntNumberName)
201
{
202
string v_InvertingNumberName = "", v_IntNumberName = p_strIntNumberName;
203
for (int i = p_strIntNumberName.Length - 1; i >= 0; i--)
204
{
205
v_InvertingNumberName = v_InvertingNumberName + v_IntNumberName[i].ToString();
206
}
207
return v_InvertingNumberName;
208
}
209
210
public static string GetEngNumberName(int p_intNumber)
211
{
212
string v_strEngNumberName = "";
213
switch (p_intNumber)
214
{
215
case 0:
216
v_strEngNumberName = "零";
217
break;
218
case 1:
219
v_strEngNumberName = "壹";
220
break;
221
case 2:
222
v_strEngNumberName = "贰";
223
break;
224
case 3:
225
v_strEngNumberName = "叁";
226
break;
227
case 4:
228
v_strEngNumberName = "肆";
229
break;
230
case 5:
231
v_strEngNumberName = "伍";
232
break;
233
case 6:
234
v_strEngNumberName = "陆";
235
break;
236
case 7:
237
v_strEngNumberName = "柒";
238
break;
239
case 8:
240
v_strEngNumberName = "捌";
241
break;
242
case 9:
243
v_strEngNumberName = "玖";
244
break;
245
case 10:
246
v_strEngNumberName = "壹拾";
247
break;
248
case 20:
249
v_strEngNumberName = "贰拾";
250
break;
251
case 30:
252
v_strEngNumberName = "叁拾";
253
break;
254
case 40:
255
v_strEngNumberName = "肆拾";
256
break;
257
case 50:
258
v_strEngNumberName = "伍拾";
259
break;
260
case 60:
261
v_strEngNumberName = "陆拾";
262
break;
263
case 70:
264
v_strEngNumberName = "柒拾";
265
break;
266
case 80:
267
v_strEngNumberName = "捌拾";
268
break;
269
case 90:
270
v_strEngNumberName = "玖拾";
271
break;
272
}
273
return v_strEngNumberName;
274
}
275
#endregion

//数字转换称大写#region//数字转换称大写2
public static string GetThousandNumberName(string p_strThousandNumberName)3

{4
string v_strThousand = p_strThousandNumberName;5
string v_strThousandNumberName = "";6
if (v_strThousand.Length == 1)7
v_strThousand = "000" + v_strThousand;8
if (v_strThousand.Length == 2)9
v_strThousand = "00" + v_strThousand;10
if (v_strThousand.Length == 3)11
v_strThousand = "0" + v_strThousand;12

13
for (int i = 0; i < v_strThousand.Length; i++)14

{15
if (i == 0 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)16
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "千";17
if (i == 1 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)18
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "百";19
else20
if (i == 1 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)21
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));22
if (i == 2 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)23
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()) * 10);24
else25
if (i == 2 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)26
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));27
if (i == 3 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)28
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())); 29
}30
return v_strThousandNumberName;31
}32
public static string GetUpperNumber(string p_strThousandNumberName)33

{34
string v_strThousand = p_strThousandNumberName;35
string v_strThousandNumberName = "";36
if (v_strThousand.Length == 1)37
v_strThousand = "000" + v_strThousand;38
if (v_strThousand.Length == 2)39
v_strThousand = "00" + v_strThousand;40
if (v_strThousand.Length == 3)41
v_strThousand = "0" + v_strThousand;42
int dotnum = 100;43
for (int i = 0; i < v_strThousand.Length; i++)44

{45
if (v_strThousand[i].ToString() == ".")46

{47
dotnum = i; 48
}49
else if (dotnum < i)50

{51
if ((dotnum + 1) == i && Convert.ToInt32(v_strThousand[i].ToString())!=0)52

{53
v_strThousandNumberName = v_strThousandNumberName +"元"+ GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "角";54
}55
if ((dotnum + 2) == i && Convert.ToInt32(v_strThousand[i].ToString())!=0)56

{57
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "分";58
}59
}60
else61

{62
if (i == 0 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)63
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "千";64
if (i == 1 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)65
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString())) + "百";66
else67
if (i == 1 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)68
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));69
if (i == 2 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)70
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()) * 10);71
else72
if (i == 2 && Convert.ToInt32(v_strThousand[i - 1].ToString()) > 0)73
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));74
if (i == 3 && Convert.ToInt32(v_strThousand[i].ToString()) > 0)75
v_strThousandNumberName = v_strThousandNumberName + GetEngNumberName(Convert.ToInt32(v_strThousand[i].ToString()));76
}77
78
}79
return v_strThousandNumberName;80
81
}82
public static string convertToChineseMoney(decimal num)83

{84
string strChina = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字85
string strUnit = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字86
string strSingleNum = ""; //从原num值中取出的值87
string strNum = ""; //数字的字符串形式88
string strResult = ""; //人民币大写金额形式89
string chChina = ""; //数字的汉语读法90
string chUnit = ""; //数字位的汉语读法91

92
int i; //循环变量93
int lenth; //num的值乘以100的字符串长度94
int nZero = 0; //用来计算连续的零值是几个95
int temp; //从原num值中取出的值96
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数97
strNum = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式98
lenth = strNum.Length; //找出最高位99

100
if (lenth > 15)101

{102
return "位数过大,无法转换!";103
}104
//取出对应位数的strUnit的值。如:200.55,lenth为5所以strUnit=佰拾元角分105
strUnit = strUnit.Substring(15 - lenth);106
//循环取出每一位需要转换的值107
for (i = 0; i < lenth; i++)108

{109
strSingleNum = strNum.Substring(i, 1); //取出需转换的某一位的值110
temp = Convert.ToInt32(strSingleNum); //转换为数字111
if (i != (lenth - 3) && i != (lenth - 7) && i != (lenth - 11) && i != (lenth - 15))112

{113
//当所取位数不为元、万、亿、万亿上的数字时114
if (strSingleNum == "0")115

{116
chChina = "";117
chUnit = "";118
nZero = nZero + 1;119
}120
else121

{122
if (strSingleNum != "0" && nZero != 0)123

{124
chChina = "零" + strChina.Substring(temp, 1);125
chUnit = strUnit.Substring(i, 1);126
nZero = 0;127
}128
else129

{130
chChina = strChina.Substring(temp, 1);131
chUnit = strUnit.Substring(i, 1);132
nZero = 0;133
}134
}135
}136
else137

{138
//该位是万亿,亿,万,元位等关键位139
if (strSingleNum != "0" && nZero != 0)140

{141
chChina = "零" + strChina.Substring(temp, 1);142
chUnit = strUnit.Substring(i, 1);143
nZero = 0;144
}145
else146

{147
if (strSingleNum != "0" && nZero == 0)148

{149
chChina = strChina.Substring(temp, 1);150
chUnit = strUnit.Substring(i, 1);151
nZero = 0;152
}153
else154

{155
if (strSingleNum == "0" && nZero >= 3)156

{157
chChina = "";158
chUnit = "";159
nZero = nZero + 1;160
}161
else162

{163
if (lenth >= 11)164

{165
chChina = "";166
nZero = nZero + 1;167
}168
else169

{170
chChina = "";171
chUnit = strUnit.Substring(i, 1);172
nZero = nZero + 1;173
}174
}175
}176
}177
}178

179
if (i == (lenth - 11) || i == (lenth - 3))180

{181
//如果该位是亿位或元位,则必须写上182
chUnit = strUnit.Substring(i, 1);183
}184

185
strResult = strResult + chChina + chUnit;186
if (i == lenth - 1 && strSingleNum == "0")187

{188
//最后一位(分)为0时,加上“整”189
strResult = strResult + '整';190
}191
}192
if (num == 0)193

{194
strResult = "零元整";195
}196

197
return strResult;198
}199

200
public static string GetInvertingNumberName(string p_strIntNumberName)201

{202
string v_InvertingNumberName = "", v_IntNumberName = p_strIntNumberName;203
for (int i = p_strIntNumberName.Length - 1; i >= 0; i--)204

{205
v_InvertingNumberName = v_InvertingNumberName + v_IntNumberName[i].ToString();206
}207
return v_InvertingNumberName;208
}209

210
public static string GetEngNumberName(int p_intNumber)211

{212
string v_strEngNumberName = "";213
switch (p_intNumber)214

{215
case 0:216
v_strEngNumberName = "零";217
break;218
case 1:219
v_strEngNumberName = "壹";220
break;221
case 2:222
v_strEngNumberName = "贰";223
break;224
case 3:225
v_strEngNumberName = "叁";226
break;227
case 4:228
v_strEngNumberName = "肆";229
break;230
case 5:231
v_strEngNumberName = "伍";232
break;233
case 6:234
v_strEngNumberName = "陆";235
break;236
case 7:237
v_strEngNumberName = "柒";238
break;239
case 8:240
v_strEngNumberName = "捌";241
break;242
case 9:243
v_strEngNumberName = "玖";244
break;245
case 10:246
v_strEngNumberName = "壹拾";247
break;248
case 20:249
v_strEngNumberName = "贰拾";250
break;251
case 30:252
v_strEngNumberName = "叁拾";253
break;254
case 40:255
v_strEngNumberName = "肆拾";256
break;257
case 50:258
v_strEngNumberName = "伍拾";259
break;260
case 60:261
v_strEngNumberName = "陆拾";262
break;263
case 70:264
v_strEngNumberName = "柒拾";265
break;266
case 80:267
v_strEngNumberName = "捌拾";268
break;269
case 90:270
v_strEngNumberName = "玖拾";271
break;272
}273
return v_strEngNumberName;274
}275
#endregion
浙公网安备 33010602011771号