为了业务的需要无聊之极的写了一个输出中文数字的方法,效率上勉强过得去,如果你有什么更好的方法,跟贴吧。
1![](/Images/OutliningIndicators/None.gif)
2
/// <summary>
3
/// 中文计数
4
/// </summary>
5
/// <param name="num">[1 - 99999]</param>
6
/// <returns></returns>
7
public static string NumToChineseNumStr(int num)
8
{
9
if(num <= 0 || num > 99999)
10
throw new ArgumentException("num");
11
string[] GradeChar = new string[]{"","十","百","千","万"};
12
string[] DigitChar = new string[]{"一","二","三","四","五","六","七","八","九"};
13
char zero = '零';
14![](/Images/OutliningIndicators/InBlock.gif)
15
int length = (int) Math.Log10(num) + 1;
16
StringBuilder output = new StringBuilder(length);
17
int[] input = new int[length];
18
int index = -1;
19
while(++index != length)
20
{
21
input[index] = (num / (length - index == 1? 1 : (int)Math.Pow(10, length -index -1))) % 10;
22
}
23![](/Images/OutliningIndicators/InBlock.gif)
24
bool needFix = false;
25
if(input.Length == 2 && input[0] == 1)
26
needFix = true;
27![](/Images/OutliningIndicators/InBlock.gif)
28
for(int pos = 0; pos < input.Length; pos ++)
29
{
30
if(input[pos] == 0)
31
{
32
if(output[output.Length -1] != zero)
33
output.Append(zero);
34
continue;
35
}
36
else if(!(pos == 0 && needFix))
37
{
38
output.Append(DigitChar[input[pos] -1]);
39
}
40
output.Append(GradeChar[input.Length - pos -1]);
41
}
42
if(output[output.Length - 1] == zero)
43
output.Remove(output.Length - 1, 1);
44
return output.ToString();
45
}
46![](/Images/OutliningIndicators/None.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
46
![](/Images/OutliningIndicators/None.gif)