惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security @ Cisco Blogs
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
C
CERT Recently Published Vulnerability Notes
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cisco Blogs
博客园 - 司徒正美
L
LINUX DO - 热门话题
D
Docker
M
MIT News - Artificial intelligence
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
Jina AI
Jina AI
Last Week in AI
Last Week in AI
Security Latest
Security Latest
The Hacker News
The Hacker News
L
Lohrmann on Cybersecurity
Y
Y Combinator Blog
A
Arctic Wolf
小众软件
小众软件
T
Threat Research - Cisco Blogs
Know Your Adversary
Know Your Adversary
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
腾讯CDC
Google DeepMind News
Google DeepMind News
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 叶小钗
I
Intezer
NISL@THU
NISL@THU
A
About on SuperTechFans
爱范儿
爱范儿
C
Cybersecurity and Infrastructure Security Agency CISA
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
Google Developers Blog
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Cyberwarzone
Cyberwarzone
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
Latest news
Latest news

博客园 - 疾行者

关于开发ActiveX 控件的安装问题 [转]安卓巴士Android开发神贴整理 Ruby On Rails 安装手记 偶然发现5年前的编程实习日记,特与博客园同仁分享一下 实现客户端的DataSet - 疾行者 - 博客园 AutoIt应用技巧示例[转] - 疾行者 - 博客园 [导入]Linq学习笔记(1.7)——First、ElementAt、Any、all [导入]Linq学习笔记(1.8)——Count、Sum、Min、Max、Average [导入]Linq学习笔记(2.1)——初识 DLinq [导入]Linq学习笔记(2.2)——深入DLinq查询 [导入]Linq学习笔记(2.3)——DLinq高级操作 NHibernate 多主键设置 - 疾行者 - 博客园 c#的一些技巧 - 疾行者 - 博客园 人的一生,到底在追求甚么?... XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子 webservice结合dthml的简单例子(二,dhtml) 文件的上传下载 asp.net访问组件失败,请在web.,config中加 javascript小技巧&&JavaScript[对象.属性]集锦 [转载了多篇]
数字转化成大写类
疾行者 · 2006-10-12 · via 博客园 - 疾行者

public class Number2English
    
{
        
private string[] StrNO = new string[19]; 
        
private string[] Unit = new string[8]; 
        
private string[] StrTens = new string[9];


        
public string NumberToString(double Number) 
        

            
string Str; 
            
string BeforePoint; 
            
string AfterPoint; 
            
string tmpStr; 
            
int nBit; 
            
string CurString;
            
int nNumLen;
            Init(); 
            Str 
= Convert.ToString(Math.Round(Number,2)); 
            
if (Str.IndexOf(".")==-1
            

                BeforePoint 
= Str; 
                AfterPoint 
= ""
            }
 
            
else 
            

                BeforePoint 
= Str.Substring(0,Str.IndexOf(".")); 
                AfterPoint 
= Str.Substring(Str.IndexOf(".")+1,Str.Length - Str.IndexOf(".")-1); 
            }

            
if (BeforePoint.Length > 12
            

                
return null
            }

            Str 
= "";
            
while (BeforePoint.Length > 0
            
{
                nNumLen 
= Len(BeforePoint); 
                
if (nNumLen % 3 == 0
                

                    CurString 
= Left(BeforePoint, 3); 
                    BeforePoint 
= Right(BeforePoint, nNumLen - 3); 
                }
 
                
else 
                

                    CurString 
= Left(BeforePoint, (nNumLen % 3)); 
                    BeforePoint 
= Right(BeforePoint, nNumLen - (nNumLen % 3)); 
                }

                nBit 
= Len(BeforePoint) / 3
                tmpStr 
= DecodeHundred(CurString);
                
if((BeforePoint == Len(BeforePoint).ToString() || nBit ==0&& Len(CurString) ==3)
                
{
                    
if (System.Convert.ToInt32(Left(CurString, 1)) != 0 & System.Convert.ToInt32(Right(CurString, 2)) != 0
                    

                        tmpStr 
= Left(tmpStr, tmpStr.IndexOf(Unit[3]) + Len(Unit[3])) + Unit[7+ " " + Right(tmpStr, Len(tmpStr) - (tmpStr.IndexOf(Unit[3]) + Len(Unit[3]))); 
                    }
 
                    
else 
                    

                        tmpStr 
= Unit[7+ " " + tmpStr; 
                    }

                }

                
if (nBit == 0
                

                    Str 
= Convert.ToString(Str + " " + tmpStr).Trim();
                }
 
                
else 
                

                    Str 
= Convert.ToString(Str + " " + tmpStr + " " + Unit[nBit-1]).Trim(); 
                }

                
if (Left(Str, 3== Unit[7]) 
                

                    Str 
= Convert.ToString(Right(Str, Len(Str) - 3)).Trim(); 
                }

                
if( BeforePoint == Len(BeforePoint).ToString())
                
{
                    
return "";
                }

            }

            BeforePoint 
= Str; 
            
if (Len(AfterPoint) > 0
            

                AfterPoint 
= Unit[5+ " " + DecodeHundred(AfterPoint) + " " + Unit[6]; 
            }
 
            
else 
            

                AfterPoint 
= Unit[4]; 
            }
 
            
return BeforePoint + " " + AfterPoint;
        }


        
private void Init() 
        

            
if (StrNO[0!= "One"
            

                StrNO[
0= "One"
                StrNO[
1= "Two"
                StrNO[
2= "Three"
                StrNO[
3= "Four"
                StrNO[
4= "Five"
                StrNO[
5= "Six"
                StrNO[
6= "Seven"
                StrNO[
7= "Eight"
                StrNO[
8= "Nine"
                StrNO[
9= "Ten"
                StrNO[
10= "Eleven"
                StrNO[
11= "Twelve"
                StrNO[
12= "Thirteen"
                StrNO[
13= "Fourteen"
                StrNO[
14= "Fifteen"
                StrNO[
15= "Sixteen"
                StrNO[
16= "Seventeen"
                StrNO[
17= "Eighteen"
                StrNO[
18= "Nineteen"
                StrTens[
0= "Ten"
                StrTens[
1= "Twenty"
                StrTens[
2= "Thirty"
                StrTens[
3= "Forty"
                StrTens[
4= "Fifty"
                StrTens[
5= "Sixty"
                StrTens[
6= "Seventy"
                StrTens[
7= "Eighty"
                StrTens[
8= "Ninety"
                Unit[
0= "Thousand"
                Unit[
1= "Million"
                Unit[
2= "Billion"
                Unit[
3= "Hundred"
                Unit[
4= "Only"
                Unit[
5= "Point"
                Unit[
6= "Cent"
                Unit[
7= "And"
            }
 
        }


        
private string DecodeHundred(string HundredString) 
        

            
int tmp;
            
string rtn="";
            
if( Len(HundredString) > 0 && Len(HundredString) <= 3)
            
{
                
switch (Len(HundredString))
                
{
                    
case 1:
                        tmp 
= System.Convert.ToInt32(HundredString); 
                        
if (tmp != 0
                        

                            rtn
=StrNO[tmp-1].ToString(); 
                        }
 
                        
break;
                    
case 2:
                        tmp 
= System.Convert.ToInt32(HundredString); 
                        
if (tmp != 0
                        

                            
if ((tmp < 20)) 
                            

                                rtn
=StrNO[tmp-1].ToString(); 
                            }
 
                            
else 
                            

                                
if (System.Convert.ToInt32(Right(HundredString, 1)) == 0
                                

                                    rtn
=StrTens[Convert.ToInt32(tmp / 10)-1].ToString(); 
                                }
 
                                
else 
                                

                                    rtn
=Convert.ToString(StrTens[Convert.ToInt32(tmp / 10)-1+ "-" + StrNO[System.Convert.ToInt32(Right(HundredString, 1))-1]);
                                }
 
                            }
 
                        }
 
                        
break;
                    
case 3:
                        
if (System.Convert.ToInt32(Left(HundredString, 1)) != 0
                        

                            rtn
=Convert.ToString(StrNO[System.Convert.ToInt32(Left(HundredString, 1))-1+ " " + Unit[3+ " " + DecodeHundred(Right(HundredString, 2))); 
                        }
 
                        
else 
                        

                            rtn
=DecodeHundred(Right(HundredString, 2)).ToString(); 
                        }
 
                        
break;
                    
default:
                        
break;
                }

            }

            
return rtn;
        }


        
private string Left(string str,int n)
        
{
            
return str.Substring(0,n);
        }


        
private string Right(string str,int n)
        
{
            
return str.Substring(str.Length-n,n);
        }


        
private int Len(string str)
        
{
            
return str.Length;
        }

 
    }
 

    
public   class   DecimalToUpper   
    
{   
        
public   DecimalToUpper()   
        
{   
            
//   
            
//   TODO:   在此处添加构造函数逻辑   
            
//   
        }
   
    
        
///   <summary>   
        
///   小写金额转换为大写金额,其他条件:金额小于一万亿,最多两位小数   
        
///   </summary>   
        
///   <param   name="d">源金额,d   《   1000000000000.00(一万亿),且最多两位小数   </param>   
        
///   <returns>结果,大写金额</returns>   

        public   string   ToUpper(decimal   d)   
        
{   
            
if   (d   ==   0)   
                
return   "零元整";   
    
            
string   je   =   d.ToString("####.00");   
            
if   (je.Length   >   15)   
                
return   "";   
            je   
=   new   String('0',15   -   je.Length)   +   je; //若小于15位长,前面补0   
    
            
string   stry   =   je.Substring(0,4); //取得'亿'单元   
            string   strw   =   je.Substring(4,4); //取得'万'单元   
            string   strg   =   je.Substring(8,4); //取得'元'单元   
            string   strf   =   je.Substring(13,2); //取得小数部分   
    
            
string   str1   =   "",str2   =   "",str3   =   "";   
    
            str1   
=   this.getupper(stry,"亿"); //亿单元的大写   
            str2   =   this.getupper(strw,""); //万单元的大写   
            str3   =   this.getupper(strg,""); //元单元的大写   
    
    
            
string   str_y   =   "",   str_w   =   "";   
            
if   (je[3]   ==   '0'   ||   je[4]   ==   '0'//亿和万之间是否有0   
                str_y   =   "";   
            
if   (je[7]   ==   '0'   ||   je[8]   ==   '0'//万和元之间是否有0   
                str_w   =   "";   
    
    
    
            
string   ret   =   str1   +   str_y   +   str2   +   str_w   +   str3; //亿,万,元的三个大写合并   
    
            
for   (int   i   =   0   ;i   <   ret.Length;i++//去掉前面的"零"   
            {   
                
if   (ret[i]   !=   '')   
                
{   
                    ret   
=   ret.Substring(i);   
                    
break;   
                }
   
    
            }
   
            
for   (int   i   =   ret.Length   -   1;i   >   -1   ;i--//去掉最后的"零"   
            {   
                
if   (ret[i]   !=   '')   
                
{   
                    ret   
=   ret.Substring(0,i+1);   
                    
break;   
                }
   
            }
   
    
            
if   (ret[ret.Length     -   1]   !=   ''//若最后不位不是'元',则加一个'元'字   
                ret   =   ret   +   "";   
    
            
if   (ret   ==   "零零元"//若为零元,则去掉"元数",结果只要小数部分   
                ret   =   "";   
    
            
if   (strf   ==   "00"//下面是小数部分的转换   
            {   
                ret   
=   ret   +   "";   
            }
   
            
else   
            
{   
                
string   tmp   =   "";   
                tmp   
=   this.getint(strf[0]);   
                
if   (tmp   ==   "")   
                    ret   
=   ret   +   tmp;   
                
else   
                    ret   
=   ret   +   tmp   +   "";   
    
                tmp   
=   this.getint(strf[1]);   
                
if   (tmp   ==   "")   
                    ret   
=   ret   +   "";   
                
else   
                    ret   
=   ret   +   tmp   +   "";   
            }
   
    
            
if   (ret[0]   ==   '')   
            
{   
                ret   
=   ret.Substring(1); //防止0.03转为"零叁分",而直接转为"叁分"   
            }
   
    
            
return     ret; //完成,返回   
    
    
        }
   
        
///   <summary>   
        
///   把一个单元转为大写,如亿单元,万单元,个单元   
        
///   </summary>   
        
///   <param   name="str">这个单元的小写数字(4位长,若不足,则前面补零)</param>   
        
///   <param   name="strDW">亿,万,元</param>   
        
///   <returns>转换结果</returns>   

        private   string   getupper(string   str,string   strDW)   
        
{   
            
if   (str   ==   "0000")   
                
return   "";   
    
            
string   ret   =   "";   
            
string   tmp1   =   this.getint(str[0])   ;   
            
string   tmp2   =   this.getint(str[1])   ;   
            
string   tmp3   =   this.getint(str[2])   ;   
            
string   tmp4   =   this.getint(str[3])   ;   
            
if   (tmp1   !=   "")   
            
{   
                ret   
=   ret   +   tmp1   +   "";   
            }
   
            
else   
            
{   
                ret   
=   ret   +   tmp1;   
            }
   
    
            
if   (tmp2   !=   "")   
            
{   
                ret   
=   ret   +   tmp2   +   "";   
            }
   
            
else   
            
{   
                
if   (tmp1   !=   ""//保证若有两个零'00',结果只有一个零,下同   
                    ret   =   ret   +   tmp2;   
            }
   
    
            
if   (tmp3   !=   "")   
            
{   
                ret   
=   ret   +   tmp3   +   "";   
            }
   
            
else   
            
{   
                
if   (tmp2   !=   "")   
                    ret   
=   ret   +   tmp3;   
            }
   
    
            
if   (tmp4   !=   "")   
            
{   
                ret   
=   ret   +   tmp4   ;   
            }
   
    
            
if   (ret[0]   ==   ''//若第一个字符是'零',则去掉   
                ret   =   ret.Substring(1);   
            
if   (ret[ret.Length   -   1]   ==   ''//若最后一个字符是'零',则去掉   
                ret   =   ret.Substring(0,ret.Length   -   1);   
    
            
return   ret   +   strDW; //加上本单元的单位   
    
        }
   
        
///   <summary>   
        
///   单个数字转为大写   
        
///   </summary>   
        
///   <param   name="c">小写阿拉伯数字   0---9</param>   
        
///   <returns>大写数字</returns>   

        private   string   getint(char   c)   
        
{   
            
string   str   =   "";   
            
switch   (   c   )   
            
{   
                
case   '0':   
                    str   
=   "";   
                    
break;   
                
case   '1':   
                    str   
=   "";   
                    
break;   
                
case   '2':   
                    str   
=   "";   
                    
break;   
                
case   '3':   
                    str   
=   "";   
                    
break;   
                
case   '4':   
                    str   
=   "";   
                    
break;   
                
case   '5':   
                    str   
=   "";   
                    
break;   
                
case   '6':   
                    str   
=   "";   
                    
break;   
                
case   '7':   
                    str   
=   "";   
                    
break;   
                
case   '8':   
                    str   
=   "";   
                    
break;   
                
case   '9':   
                    str   
=   "";   
                    
break;   
            }
   
            
return   str;   
        }
   
    }