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

推荐订阅源

博客园 - 三生石上(FineUI控件)
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
B
Blog
N
Netflix TechBlog - Medium
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
M
MIT News - Artificial intelligence
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
Vercel News
Vercel News
T
Tenable Blog
Security Latest
Security Latest
C
Check Point Blog
云风的 BLOG
云风的 BLOG
PCI Perspectives
PCI Perspectives
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
雷峰网
雷峰网
IT之家
IT之家
H
Hacker News: Front Page
Microsoft Security Blog
Microsoft Security Blog
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Last Week in AI
Last Week in AI
G
Google Developers Blog
Forbes - Security
Forbes - Security
The Register - Security
The Register - Security
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Martin Fowler
Martin Fowler
K
Kaspersky official blog
P
Proofpoint News Feed
T
Threatpost
Google Online Security Blog
Google Online Security Blog
Microsoft Azure Blog
Microsoft Azure Blog

博客园 - 疾行者

关于开发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;   
        }
   
    }