首页 > 转换人民币大小金额

转换人民币大小金额

  1 using System; 

  2  

  3 namespace Test 

  4 

  5     /**////  

  6     /// Rmb 的摘要说明。 

  7     /// 
 

  8     public class Rmb 

  9     { 

 10         /**////  

 11         /// 转换人民币大小金额 

 12         /// 
 

 13         /// 金额 

 14         /// 返回大写形式 

 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         /**////  

128         /// 一个重载,将字符串先转换成数字在调用CmycurD(decimal num) 

129         /// 
 

130         /// 用户输入的金额,字符串形式未转成decimal 

131         ///  

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

更多相关:

  • 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = “1432219”, k = 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和 2形成一个新的最小的数...

  • 代码展示:   http://paste.ubuntu.com/23693598/ #include #include #include char * largeDiffer(char *a,char *b){ /*  使用说明 传入的a和b只能为整数 结果为a-b;返回...

  • Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of Ch...

  • /*Name: NYOJ--811--变态最大值Author: shen_渊 Date: 17/04/17 15:49Description: 看到博客上这道题浏览量最高,原来的代码就看不下去了 o(╯□╰)o */#include #include #include u...

  • 生成唯一号:思路,根据yymmddhhmmss+自增长号+唯一服务器号( SystemNo)生成唯一码,总长度19,例如:1509281204550000101. public class UniqueNumber {     private static long num = 0;//流水号     private sta...

  • #include #include #include #include #include #include #include

  • 题目:表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、"5e2"、"-123"、"3.1416"、"0123"及"-1E-16"都表示数值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。 解题: 数值错误的形式有多种多样,但是正确的...

  • 加法伺候  //超过20位数值相加---------------------------------------- function bigNumAdd(a, b) {if (!(typeof a === "string" && typeof b === "string")) return console.log("传入参数必...

  • 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程...

  • 简单record 一下 #include // 'struct sockaddr_in' #include #include // 'struct ifreq' and 'struct if_nameindex' #include #inc...