1 /// <summary> 2 /// 金额小写变大写 3 /// </summary> 4 /// <param name="smallnum"></param> 5 /// <returns></returns> 6 public static string gMoney(decimal smallnum) 7 { 8 string cmoney , cnumber, cnum, cnum_end,cmon ,cno,snum ,sno; 9 int snum_len , sint_len, cbegin, zflag , i; 10 if(smallnum > 1000000000000 || smallnum < -99999999999 || smallnum == 0) 11 return ""; 12 cmoney = "仟佰拾亿仟佰拾万仟佰拾元角分" ;// 大写人民币单位字符串 13 cnumber = "壹贰叁肆伍陆柒捌玖" ;// 大写数字字符串 14 cnum = "" ;// 转换后的大写数字字符串 15 cnum_end = "" ;// 转换后的大写数字字符串的最后一位 16 cmon = "" ;// 取大写人民币单位字符串中的某一位 17 cno = "" ;// 取大写数字字符串中的某一位 18 19 20 21 snum = Round(smallnum,2).ToString("############.00"); ;// 小写数字字符串 22 snum_len = snum.Length ;// 小写数字字符串的长度 23 sint_len = snum_len - 2 ;// 小写数字整数部份字符串的长度 24 sno = "" ;// 小写数字字符串中的某个数字字符 25 cbegin = 15 - snum_len ;// 大写人民币单位中的汉字位置 26 zflag = 1 ;// 小写数字字符是否为0(0=0)的判断标志 27 i = 0 ;// 小写数字字符串中数字字符的位置 28 29 if(snum_len > 15) 30 return ""; 31 for(i=0;i<snum_len;i++) 32 { 33 if (i==sint_len-1) 34 continue; 35 36 37 cmon = cmoney.Substring(cbegin, 1); 38 cbegin = cbegin + 1; 39 sno =snum.Substring(i,1); 40 if (sno=="-") 41 { 42 cnum = cnum + "负"; 43 continue; 44 } 45 else if(sno=="0") 46 { 47 cnum_end = cnum.Substring(cnum.Length-2,1); 48 if(cbegin == 4 || (cbegin == 8 || cnum_end.IndexOf("亿")>=0|| cbegin == 12 )) 49 { 50 cnum = cnum + cmon; 51 if (cnumber.IndexOf(cnum_end)>=0 ) 52 zflag = 1; 53 else 54 zflag = 0; 55 } 56 else 57 { 58 zflag = 0; 59 } 60 continue; 61 } 62 else if( sno != "0" && zflag == 0) 63 { 64 cnum = cnum + "零"; 65 zflag = 1; 66 } 67 cno =cnumber.Substring(System.Convert.ToInt32(sno)-1, 1); 68 cnum = cnum + cno + cmon; 69 } 70 if (snum.Substring(snum.Length-2,1)=="0") 71 { 72 return cnum + "整"; 73 } 74 else 75 return cnum; 76 }
时间: 2024-10-13 02:08:25