【IT168技术文档】
1 public class ConverMoney 2 { 3 public static string ConvertToUpper(double inputNum) 4 { 5 string strTemp = inputNum.ToString("f2"); 6 return ProcessLeft(strTemp)+ProcessRight(strTemp); 7 } 8 9 #region 处理整数部分 10 private static string ProcessLeft(string inputNum) 11 { 12 int temp = Convert.ToInt32(inputNum.Substring(0, inputNum.IndexOf('.'))); 13 Stack<string> processStack=new Stack<string>(); 14 string[] separate ={ "拾", "佰", "仟", "万", "十","佰","仟","亿" }; 15 int i=0; 16 if(temp<10) 17 { 18 return temp.ToString(); 19 } 20 else 21 { 22 while (true) 23 { 24 if (temp % 10 != 0) 25 { 26 if (i != 0) 27 processStack.Push(separate[i-1]); 28 processStack.Push(ConvertNumToUpper(temp % 10)); 29 30 } 31 else 32 { 33 if (processStack.Count != 0 && processStack.Peek() != "零") 34 processStack.Push("零"); 35 36 } 37 i++; 38 temp = temp / 10; 39 if (temp == 0) 40 break; 41 } 42 } 43 string returnStr = ""; 44 while (processStack.Count != 0) 45 returnStr = returnStr + processStack.Pop(); 46 return returnStr; 47 } 48 #endregion 49 50 #region 处理小数部分 51 private static string ProcessRight(string inputNum) 52 { 53 int temp1=Convert.ToInt32(inputNum.Substring(inputNum.IndexOf('.') + 1,1)); 54 int temp2 = Convert.ToInt32(inputNum.Substring(inputNum.IndexOf('.') + 2, 1)); 55 if (temp1 == 0 && temp2 == 0) 56 return "圆整"; 57 else 58 return "圆零"+ConvertNumToUpper(temp1) + "角" + ConvertNumToUpper(temp2) + "分"; 59 60 } 61 #endregion 62 63 #region 数字转换成大写 64 private static string ConvertNumToUpper(int input) 65 { 66 string[] UpperNum ={ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒" ,"玖"}; 67 if (input <= 9) 68 { 69 return UpperNum[input]; 70 } 71 else 72 { 73 throw new Exception("转换错误"); 74 } 75 } 76 #endregion 77 }