在院子里看到很多关于将数字转换成中文表达的程序,自己忍不住也写了一个,大家指正
我的思路是:
1,将输入转为int型(下文再提出小数后如何解决)
2,将得到的数对 ‘10’ 做取余计算,将得到的数作为当前 “阶级” 的量词插入(“阶级”指“拾,佰,仟,万”等。。。)
3,如果2步中取余后剩下的部分不为 “ 0 ”,则重复计算,并递增 “阶级”;
4,得到结果为“0”时,中止程序,输出结果;
小数的实现思路则是,先将小数部分单独取出(decime=num-(int)num;//num为浮点数),然后每次乘以10,将得到的数位配以合适的“阶级”,
如果运算后结果不为零则继续,一直精确到 “厘” (小数点后3位)为止;代码如下:
Code
1 private char[] ChineseSymbol = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
2 private char[] ChineseSymbol2 = { '圆', '拾', '佰', '仟', '万' };
3
4
5 private void btnTran_Click(object sender, EventArgs e)
6 {
7 int num = int.Parse(this.textBox1.Text);
8 string cv="";
9 exchange(num,ref cv);
10 this.textBox2.Text = cv;
11 }
12 private void exchange(int num, ref string chineseValue)
13 {
14 //转换函数
15
16 int divideIndex = 0;
17 int divideResult = num % 10;
18 int divideRemain = num / 10;
19
20 StringBuilder cvbuild = new StringBuilder();
21 cvbuild.Insert(0, ChineseSymbol2[divideIndex]);
22 cvbuild.Insert(0, ChineseSymbol[divideResult]);
23 while (divideRemain != 0)
24 {
25 divideIndex++;
26 divideResult = divideRemain % 10;
27 divideRemain = divideRemain / 10;
28 cvbuild.Insert(0, ChineseSymbol2[divideIndex]);
29 cvbuild.Insert(0, ChineseSymbol[divideResult]);
30 }
31
32 chineseValue = cvbuild.ToString();
33
34