1using System;
 2    class Class1
 3    {
 4        static void Main(string[] args)
 5        {
 6            Console.WriteLine(changeToBig(345.56));
 7        }

 8        public static String changeToBig(double value)
 9        {
10            char[] hunit={'','',''};                                               //段内位置表示
11            char[] vunit={'','亿'};                                                     //段名表示
12            char[] digit={'','','','','','','','','',''};  //数字表示
13            long midVal = (long)(value*100);                                      //转化成整形
14            String valStr=midVal.ToString();                                //转化成字符串
15            String head=valStr.Substring(0,valStr.Length-2);               //取整数部分
16            String rail=valStr.Substring(valStr.Length-2);                     //取小数部分
17
18            String prefix="";                                                                 //整数部分转化的结果
19            String suffix="";                                                                  //小数部分转化的结果
20            //处理小数点后面的数
21            if(rail.Equals("00"))
22            {                                                            //如果小数部分为0
23                suffix="";
24            }
 
25            else
26            {
27                suffix=digit[rail[0]-'0']+""+digit[rail[1]-'0']+"";        //否则把角分转化出来
28            }

29            //处理小数点前面的数
30            char[] chDig=head.ToCharArray();                                                         //把整数部分转化成字符数组
31            char zero='0';                                                                                          //标志'0'表示出现过0
32            byte zeroSerNum = 0;                                                                            //连续出现0的次数
33            for(int i=0;i<chDig.Length;i++)
34            {                                                               //循环处理每个数字
35                int idx=(chDig.Length-i-1)%4;                                                                //取段内位置
36                int vidx=(chDig.Length-i-1)/4;                                                                //取段位置
37                if(chDig[i]=='0')
38                {                                                                                  //如果当前字符是0
39                    zeroSerNum++;                                                                                 //连续0次数递增
40                    if(zero == '0')
41                    {                                                                                    //标志
42                        zero=digit[0];
43                    }
 
44                    else if(idx==0 && vidx >0 &&zeroSerNum < 4)
45                    {
46                        prefix += vunit[vidx-1];
47                        zero='0';
48                    }

49                    continue;
50                }

51                zeroSerNum = 0;                                                                                    //连续0次数清零
52                if(zero != '0'
53                {                                                                                        //如果标志不为0,则加上,例如万,亿什么的
54                    prefix+=zero;
55                    zero='0';
56                }

57                prefix+=digit[chDig[i]-'0'];                                                                        //转化该数字表示
58                if(idx > 0) prefix += hunit[idx-1];                  
59                if(idx==0 && vidx>0)
60                {
61                    prefix+=vunit[vidx-1];                                                                             //段结束位置应该加上段名如万,亿
62                }

63            }

64
65            if(prefix.Length > 0) prefix += '';                                                             //如果整数部分存在,则有圆的字样
66            return prefix+suffix;                                                                                     //返回正确表示
67        }

68    }

69
70

只有注册用户登录后才能发表评论, 未注册用户请先注册
网站导航:

posts - 46, comments - 16, trackbacks - 0, articles - 7

Copyright © 火山工作室