转换人民币大小金额
                            
                            
                            ??1?using?System;?
??2??
??3?namespace?Test?
??4?{?
??5?????/**////?<summary>?
??6?????///?Rmb?的摘要說明。?
??7?????///?</summary>?
??8?????public?class?Rmb?
??9?????{?
?10?????????/**////?<summary>?
?11?????????///?轉換人民幣大小金額?
?12?????????///?</summary>?
?13?????????///?<param?name="num">金額</param>?
?14?????????///?<returns>返回大寫形式</returns>?
?15?????????public?static?string?CmycurD(decimal?num)?
?16?????????{?
?17?????????????string?str1?=?"零壹貳叁肆伍陸柒捌玖";????????????//0-9所對應的漢字?
?18?????????????string?str2?=?"萬仟佰拾億仟佰拾萬仟佰拾元角分";?//數字位所對應的漢字?
?19?????????????string?str3?=?"";????//從原num值中取出的值?
?20?????????????string?str4?=?"";????//數字的字符串形式?
?21?????????????string?str5?=?"";??//人民幣大寫金額形式?
?22?????????????int?i;????//循環變量?
?23?????????????int?j;????//num的值乘以100的字符串長度?
?24?????????????string?ch1?=?"";????//數字的漢語讀法?
?25?????????????string?ch2?=?"";????//數字位的漢字讀法?
?26?????????????int?nzero?=?0;??//用來計算連續的零值是幾個?
?27?????????????int?temp;????????????//從原num值中取出的值?
?28??
?29?????????????num?=?Math.Round(Math.Abs(num),2);????//將num取絕對值并四舍五入取2位小數?
?30?????????????str4?=?((long)(num*100)).ToString();????????//將num乘100并轉換成字符串形式?
?31?????????????j?=?str4.Length;??????//找出最高位?
?32?????????????if?(j?>?15){return?"溢出";}?
?33?????????????str2?=?str2.Substring(15-j);???//取出對應位數的str2的值。如:200.55,j為5所以str2=佰拾元角分?
?34????????????????
?35?????????????//循環取出每一位需要轉換的值?
?36?????????????for(i=0;i<j;i++)?
?37?????????????{?
?38?????????????????str3?=?str4.Substring(i,1);??????????//取出需轉換的某一位的值?
?39?????????????????temp?=?Convert.ToInt32(str3);??????//轉換為數字?
?40?????????????????if?(i?!=?(j-3)?&&?i?!=?(j-7)?&&?i?!=?(j-11)?&&?i?!=?(j-15))?
?41?????????????????{?????
?42?????????????????????//當所取位數不為元、萬、億、萬億上的數字時?
?43?????????????????????if?(str3?==?"0")?
?44?????????????????????{?
?45?????????????????????????ch1?=?"";?
?46?????????????????????????ch2?=?"";?
?47?????????????????????????nzero?=?nzero?+?1;?
?48?????????????????????}?
?49?????????????????????else?
?50?????????????????????{?
?51?????????????????????????if(str3?!=?"0"?&&?nzero?!=?0)?
?52?????????????????????????{?
?53?????????????????????????????ch1?=?"零"?+?str1.Substring(temp*1,1);?
?54?????????????????????????????ch2?=?str2.Substring(i,1);?
?55?????????????????????????????nzero?=?0;?
?56?????????????????????????}?
?57?????????????????????????else?
?58?????????????????????????{?
?59?????????????????????????????ch1?=?str1.Substring(temp*1,1);?
?60?????????????????????????????ch2?=?str2.Substring(i,1);?
?61?????????????????????????????nzero?=?0;?
?62?????????????????????????}?
?63?????????????????????}?
?64?????????????????}?
?65?????????????????else?
?66?????????????????{??
?67?????????????????????//該位是萬億,億,萬,元位等關鍵位?
?68?????????????????????if?(str3?!=?"0"?&&?nzero?!=?0)?
?69?????????????????????{?
?70?????????????????????????ch1?=?"零"?+?str1.Substring(temp*1,1);?
?71?????????????????????????ch2?=?str2.Substring(i,1);?
?72?????????????????????????nzero?=?0;?
?73?????????????????????}?
?74?????????????????????else?
?75?????????????????????{?
?76?????????????????????????if?(str3?!=?"0"?&&?nzero?==?0)?
?77?????????????????????????{?
?78?????????????????????????????ch1?=?str1.Substring(temp*1,1);?
?79?????????????????????????????ch2?=?str2.Substring(i,1);?
?80?????????????????????????????nzero?=?0;?
?81?????????????????????????}?
?82?????????????????????????else?
?83?????????????????????????{?
?84?????????????????????????????if?(str3?==?"0"?&&?nzero?>=?3)?
?85?????????????????????????????{?
?86?????????????????????????????????ch1?=?"";?
?87?????????????????????????????????ch2?=?"";?
?88?????????????????????????????????nzero?=?nzero?+?1;?
?89?????????????????????????????}?
?90?????????????????????????????else?
?91?????????????????????????????{?
?92?????????????????????????????????if?(j?>=?11)?
?93?????????????????????????????????{?
?94?????????????????????????????????????ch1?=?"";?
?95?????????????????????????????????????nzero?=?nzero?+?1;?
?96?????????????????????????????????}?
?97?????????????????????????????????else?
?98?????????????????????????????????{?
?99?????????????????????????????????????ch1?=?"";?
100?????????????????????????????????????ch2?=?str2.Substring(i,1);?
101?????????????????????????????????????nzero?=?nzero?+?1;?
102?????????????????????????????????}?
103?????????????????????????????}?
104?????????????????????????}?
105?????????????????????}?
106?????????????????}?
107?????????????????if?(i?==?(j-11)?||?i?==?(j-3))?
108?????????????????{??
109?????????????????????//如果該位是億位或元位,則必須寫上?
110?????????????????????ch2?=?str2.Substring(i,1);?
111?????????????????}?
112?????????????????str5?=?str5?+?ch1?+?ch2;?
113??????
114?????????????????if?(i?==?j-1?&&?str3?==?"0"?)?
115?????????????????{????
116?????????????????????//最后一位(分)為0時,加上“整”?
117?????????????????????str5?=?str5?+?'整';?
118?????????????????}?
119?????????????}?
120?????????????if?(num?==?0)?
121?????????????{?
122?????????????????str5?=?"零元整";?
123?????????????}?
124?????????????return?str5;?
125?????????}?
126??
127?????????/**////?<summary>?
128?????????///?一個重載,將字符串先轉換成數字在調用CmycurD(decimal?num)?
129?????????///?</summary>?
130?????????///?<param?name="num">用戶輸入的金額,字符串形式未轉成decimal</param>?
131?????????///?<returns></returns>?
132?????????public?static?string?CmycurD(string?numstr)?
133?????????{?
134?????????????try?
135?????????????{?
136?????????????????decimal?num?=?Convert.ToDecimal(numstr);?
137?????????????????return?CmycurD(num);?
138?????????????}?
139?????????????catch?
140?????????????{?
141?????????????????return?"非數字形式!";?
142?????????????}?
143?????????}?
144?????}?
145?}?
146?
                        
                        
                        ??2??
??3?namespace?Test?
??4?{?
??5?????/**////?<summary>?
??6?????///?Rmb?的摘要說明。?
??7?????///?</summary>?
??8?????public?class?Rmb?
??9?????{?
?10?????????/**////?<summary>?
?11?????????///?轉換人民幣大小金額?
?12?????????///?</summary>?
?13?????????///?<param?name="num">金額</param>?
?14?????????///?<returns>返回大寫形式</returns>?
?15?????????public?static?string?CmycurD(decimal?num)?
?16?????????{?
?17?????????????string?str1?=?"零壹貳叁肆伍陸柒捌玖";????????????//0-9所對應的漢字?
?18?????????????string?str2?=?"萬仟佰拾億仟佰拾萬仟佰拾元角分";?//數字位所對應的漢字?
?19?????????????string?str3?=?"";????//從原num值中取出的值?
?20?????????????string?str4?=?"";????//數字的字符串形式?
?21?????????????string?str5?=?"";??//人民幣大寫金額形式?
?22?????????????int?i;????//循環變量?
?23?????????????int?j;????//num的值乘以100的字符串長度?
?24?????????????string?ch1?=?"";????//數字的漢語讀法?
?25?????????????string?ch2?=?"";????//數字位的漢字讀法?
?26?????????????int?nzero?=?0;??//用來計算連續的零值是幾個?
?27?????????????int?temp;????????????//從原num值中取出的值?
?28??
?29?????????????num?=?Math.Round(Math.Abs(num),2);????//將num取絕對值并四舍五入取2位小數?
?30?????????????str4?=?((long)(num*100)).ToString();????????//將num乘100并轉換成字符串形式?
?31?????????????j?=?str4.Length;??????//找出最高位?
?32?????????????if?(j?>?15){return?"溢出";}?
?33?????????????str2?=?str2.Substring(15-j);???//取出對應位數的str2的值。如:200.55,j為5所以str2=佰拾元角分?
?34????????????????
?35?????????????//循環取出每一位需要轉換的值?
?36?????????????for(i=0;i<j;i++)?
?37?????????????{?
?38?????????????????str3?=?str4.Substring(i,1);??????????//取出需轉換的某一位的值?
?39?????????????????temp?=?Convert.ToInt32(str3);??????//轉換為數字?
?40?????????????????if?(i?!=?(j-3)?&&?i?!=?(j-7)?&&?i?!=?(j-11)?&&?i?!=?(j-15))?
?41?????????????????{?????
?42?????????????????????//當所取位數不為元、萬、億、萬億上的數字時?
?43?????????????????????if?(str3?==?"0")?
?44?????????????????????{?
?45?????????????????????????ch1?=?"";?
?46?????????????????????????ch2?=?"";?
?47?????????????????????????nzero?=?nzero?+?1;?
?48?????????????????????}?
?49?????????????????????else?
?50?????????????????????{?
?51?????????????????????????if(str3?!=?"0"?&&?nzero?!=?0)?
?52?????????????????????????{?
?53?????????????????????????????ch1?=?"零"?+?str1.Substring(temp*1,1);?
?54?????????????????????????????ch2?=?str2.Substring(i,1);?
?55?????????????????????????????nzero?=?0;?
?56?????????????????????????}?
?57?????????????????????????else?
?58?????????????????????????{?
?59?????????????????????????????ch1?=?str1.Substring(temp*1,1);?
?60?????????????????????????????ch2?=?str2.Substring(i,1);?
?61?????????????????????????????nzero?=?0;?
?62?????????????????????????}?
?63?????????????????????}?
?64?????????????????}?
?65?????????????????else?
?66?????????????????{??
?67?????????????????????//該位是萬億,億,萬,元位等關鍵位?
?68?????????????????????if?(str3?!=?"0"?&&?nzero?!=?0)?
?69?????????????????????{?
?70?????????????????????????ch1?=?"零"?+?str1.Substring(temp*1,1);?
?71?????????????????????????ch2?=?str2.Substring(i,1);?
?72?????????????????????????nzero?=?0;?
?73?????????????????????}?
?74?????????????????????else?
?75?????????????????????{?
?76?????????????????????????if?(str3?!=?"0"?&&?nzero?==?0)?
?77?????????????????????????{?
?78?????????????????????????????ch1?=?str1.Substring(temp*1,1);?
?79?????????????????????????????ch2?=?str2.Substring(i,1);?
?80?????????????????????????????nzero?=?0;?
?81?????????????????????????}?
?82?????????????????????????else?
?83?????????????????????????{?
?84?????????????????????????????if?(str3?==?"0"?&&?nzero?>=?3)?
?85?????????????????????????????{?
?86?????????????????????????????????ch1?=?"";?
?87?????????????????????????????????ch2?=?"";?
?88?????????????????????????????????nzero?=?nzero?+?1;?
?89?????????????????????????????}?
?90?????????????????????????????else?
?91?????????????????????????????{?
?92?????????????????????????????????if?(j?>=?11)?
?93?????????????????????????????????{?
?94?????????????????????????????????????ch1?=?"";?
?95?????????????????????????????????????nzero?=?nzero?+?1;?
?96?????????????????????????????????}?
?97?????????????????????????????????else?
?98?????????????????????????????????{?
?99?????????????????????????????????????ch1?=?"";?
100?????????????????????????????????????ch2?=?str2.Substring(i,1);?
101?????????????????????????????????????nzero?=?nzero?+?1;?
102?????????????????????????????????}?
103?????????????????????????????}?
104?????????????????????????}?
105?????????????????????}?
106?????????????????}?
107?????????????????if?(i?==?(j-11)?||?i?==?(j-3))?
108?????????????????{??
109?????????????????????//如果該位是億位或元位,則必須寫上?
110?????????????????????ch2?=?str2.Substring(i,1);?
111?????????????????}?
112?????????????????str5?=?str5?+?ch1?+?ch2;?
113??????
114?????????????????if?(i?==?j-1?&&?str3?==?"0"?)?
115?????????????????{????
116?????????????????????//最后一位(分)為0時,加上“整”?
117?????????????????????str5?=?str5?+?'整';?
118?????????????????}?
119?????????????}?
120?????????????if?(num?==?0)?
121?????????????{?
122?????????????????str5?=?"零元整";?
123?????????????}?
124?????????????return?str5;?
125?????????}?
126??
127?????????/**////?<summary>?
128?????????///?一個重載,將字符串先轉換成數字在調用CmycurD(decimal?num)?
129?????????///?</summary>?
130?????????///?<param?name="num">用戶輸入的金額,字符串形式未轉成decimal</param>?
131?????????///?<returns></returns>?
132?????????public?static?string?CmycurD(string?numstr)?
133?????????{?
134?????????????try?
135?????????????{?
136?????????????????decimal?num?=?Convert.ToDecimal(numstr);?
137?????????????????return?CmycurD(num);?
138?????????????}?
139?????????????catch?
140?????????????{?
141?????????????????return?"非數字形式!";?
142?????????????}?
143?????????}?
144?????}?
145?}?
146?
轉載于:https://www.cnblogs.com/tonybinlj/archive/2008/11/04/1326258.html
總結
 
                            
                        - 上一篇: 精通ASP.NET中弹出窗口技术
- 下一篇: 足银多少钱啊?
