View Code
1
public
class
UpperConvert
2
{
3
public
UpperConvert()
4
{
5
//
6
//
TODO: 在此处添加构造函数逻辑
7
//
8
}
9
//
把数字转换为大写
10
public
string
numtoUpper(
int
num)
11
{
12
String str
=
num.ToString();
13
string
rstr
=
""
;
14
int
n;
15
for
(
int
i
=
0
; i
<
str.Length; i
++
)
16
{
17
n
=
Convert.ToInt16(str[i].ToString());
//
char转数字,转换为字符串,再转数字
18
switch
(n)
19
{
20
case
0
:rstr
=
rstr
+
"
〇
"
;
break
;
21
case
1
:rstr
=
rstr
+
"
一
"
;
break
;
22
case
2
:rstr
=
rstr
+
"
二
"
;
break
;
23
case
3
:rstr
=
rstr
+
"
三
"
;
break
;
24
case
4
:rstr
=
rstr
+
"
四
"
;
break
;
25
case
5
:rstr
=
rstr
+
"
五
"
;
break
;
26
case
6
:rstr
=
rstr
+
"
六
"
;
break
;
27
case
7
:rstr
=
rstr
+
"
七
"
;
break
;
28
case
8
:rstr
=
rstr
+
"
八
"
;
break
;
29
default
:rstr
=
rstr
+
"
九
"
;
break
;
30
31
32
}
33
34
}
35
return
rstr;
36
}
37
//
月转化为大写
38
public
string
monthtoUpper(
int
month)
39
{
40
if
(month
<
10
)
41
{
42
return
numtoUpper(month);
43
}
44
else
45
if
(month
==
10
) {
return
"
十
"
; }
46
47
else
48
{
49
return
"
十
"
+
numtoUpper(month
-
10
);
50
}
51
}
52
//
日转化为大写
53
public
string
daytoUpper(
int
day)
54
{
55
if
(day
<
20
)
56
{
57
return
monthtoUpper(day);
58
}
59
else
60
{
61
String str
=
day.ToString();
62
if
(str[
1
]
==
'
0
'
)
63
{
64
return
numtoUpper(Convert.ToInt16(str[
0
].ToString()))
+
"
十
"
;
65
66
}
67
68
69
else
70
{
71
return
numtoUpper(Convert.ToInt16(str[
0
].ToString()))
+
"
十
"
72
+
numtoUpper(Convert.ToInt16(str[
1
].ToString()));
73
}
74
}
75
}
76
//
日期转换为大写
77
public
string
dateToUpper(System.DateTime date)
78
{
79
int
year
=
date.Year;
80
int
month
=
date.Month;
81
int
day
=
date.Day;
82
return
numtoUpper(year)
+
"
年
"
+
monthtoUpper(month)
+
"
月
"
+
daytoUpper(day)
+
"
日
"
;
83
84
}
85
}
86
货币转换代码:
87
/**/
///
<summary>
88
///
MoneyConvert 的摘要说明
89
///
</summary>
90
public
class
MoneyConvert
91
{
92
public
MoneyConvert()
93
{
94
//
95
//
TODO: 在此处添加构造函数逻辑
96
//
97
}
98
public
string
GetUpper(
string
numstr)
99
{
100
try
101
{
102
decimal
num
=
Convert.ToDecimal(numstr);
103
return
GetUpper(num);
104
}
105
catch
106
{
107
return
"
非数字形式!
"
;
108
}
109
}
110
public
string
GetUpper(
int
numint)
111
{
112
try
113
{
114
decimal
num
=
Convert.ToDecimal(numint);
115
return
GetUpper(num);
116
}
117
catch
118
{
119
return
"
非数字形式!
"
;
120
}
121
}
122
/**//**/
123
/**/
///
<summary>
124
///
转换人民币大小金额
125
///
</summary>
126
///
<param name="num">
金额
</param>
127
///
<returns>
返回大写形式
</returns>
128
public
string
GetUpper(
decimal
num)
129
{
130
string
strUpperMum
=
"
零壹贰叁肆伍陆柒捌玖
"
;
//
0-9所对应的汉字
131
string
strNumUnit
=
"
万仟佰拾亿仟佰拾万仟佰拾元角分
"
;
//
数字位所对应的汉字
132
string
strOfNum
=
""
;
//
从原num值中取出的值
133
string
strNum
=
""
;
//
数字的字符串形式
134
string
strReturnUpper
=
""
;
//
人民币大写金额形式
135
int
i;
//
循环变量
136
int
sumLength;
//
num的值乘以100的字符串长度
137
string
ch1
=
""
;
//
数字的汉语读法
138
string
ch2
=
""
;
//
数字位的汉字读法
139
int
nzero
=
0
;
//
用来计算连续的零值是几个
140
int
temp;
//
从原num值中取出的值
141
142
num
=
Math.Round(Math.Abs(num),
2
);
//
将num取绝对值并四舍五入取2位小数
143
strNum
=
((
long
)(num
*
100
)).ToString();
//
将num乘100并转换成字符串形式
144
sumLength
=
strNum.Length;
//
找出最高位
145
if
(sumLength
>
15
) {
return
"
溢出
"
; }
146
strNumUnit
=
strNumUnit.Substring(
15
-
sumLength);
//
取出对应位数的strNumUnit的值。如:200.55,sumLength为5所以strNumUnit=佰拾元角分
147
148
//
循环取出每一位需要转换的值
149
for
(i
=
0
; i
<
sumLength; i
++
)
150
{
151
strOfNum
=
strNum.Substring(i,
1
);
//
取出需转换的某一位的值
152
temp
=
Convert.ToInt32(strOfNum);
//
转换为数字
153
if
(i
!=
(sumLength
-
3
)
&&
i
!=
(sumLength
-
7
)
&&
i
!=
(sumLength
-
11
)
&&
i
!=
(sumLength
-
15
))
154
{
155
//
当所取位数不为元、万、亿、万亿上的数字时
156
if
(strOfNum
==
"
0
"
)
157
{
158
ch1
=
""
;
159
ch2
=
""
;
160
nzero
=
nzero
+
1
;
161
}
162
else
163
{
164
if
(strOfNum
!=
"
0
"
&&
nzero
!=
0
)
165
{
166
ch1
=
"
零
"
+
strUpperMum.Substring(temp
*
1
,
1
);
167
ch2
=
strNumUnit.Substring(i,
1
);
168
nzero
=
0
;
169
}
170
else
171
{
172
ch1
=
strUpperMum.Substring(temp
*
1
,
1
);
173
ch2
=
strNumUnit.Substring(i,
1
);
174
nzero
=
0
;
175
}
176
}
177
}
178
else
179
{
180
//
该位是万亿,亿,万,元位等关键位
181
if
(strOfNum
!=
"
0
"
&&
nzero
!=
0
)
182
{
183
ch1
=
"
零
"
+
strUpperMum.Substring(temp
*
1
,
1
);
184
ch2
=
strNumUnit.Substring(i,
1
);
185
nzero
=
0
;
186
}
187
else
188
{
189
if
(strOfNum
!=
"
0
"
&&
nzero
==
0
)
190
{
191
ch1
=
strUpperMum.Substring(temp
*
1
,
1
);
192
ch2
=
strNumUnit.Substring(i,
1
);
193
nzero
=
0
;
194
}
195
else
196
{
197
if
(strOfNum
==
"
0
"
&&
nzero
>=
3
)
198
{
199
ch1
=
""
;
200
ch2
=
""
;
201
nzero
=
nzero
+
1
;
202
}
203
else
204
{
205
if
(sumLength
>=
11
)
206
{
207
ch1
=
""
;
208
nzero
=
nzero
+
1
;
209
}
210
else
211
{
212
ch1
=
""
;
213
ch2
=
strNumUnit.Substring(i,
1
);
214
nzero
=
nzero
+
1
;
215
}
216
}
217
}
218
}
219
}
220
if
(i
==
(sumLength
-
11
)
||
i
==
(sumLength
-
3
))
221
{
222
//
如果该位是亿位或元位,则必须写上
223
ch2
=
strNumUnit.Substring(i,
1
);
224
}
225
strReturnUpper
=
strReturnUpper
+
ch1
+
ch2;
226
227
if
(i
==
sumLength
-
1
&&
strOfNum
==
"
0
"
)
228
{
229
//
最后一位(分)为0时,加上“整”
230
strReturnUpper
=
strReturnUpper
+
'
整
'
;
231
}
232
}
233
if
(num
==
0
)
234
{
235
strReturnUpper
=
"
零元整
"
;
236
}
237
return
strReturnUpper;
238
}
239
}
转载于:https://www.cnblogs.com/right_forever/archive/2011/06/02/2068548.html
相关资源:C#把数字转换成大写金额的代码实例
转载请注明原文地址: https://mac.8miu.com/read-241534.html