123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using FastReport;
- namespace FastReport
- {
- public class FastReportFunction
- {
- /// <summary>
- /// 金额转换成中文大写金额
- /// </summary>
- /// <param name="LowerMoney">eg:10.74</param>
- /// <returns></returns>
- public static string MoneyToUpper(string LowerMoney)
- {
- string functionReturnValue = null;
- bool IsNegative = false; // 是否是负数
- if (LowerMoney.Trim().Substring(0, 1) == "-")
- {
- // 是负数则先转为正数
- LowerMoney = LowerMoney.Trim().Remove(0, 1);
- IsNegative = true;
- }
- string strLower = null;
- string strUpart = null;
- string strUpper = null;
- int iTemp = 0;
- // 保留两位小数 123.489→123.49 123.4→123.4
- LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();
- if (LowerMoney.IndexOf(".") > 0)
- {
- if (LowerMoney.IndexOf(".") == LowerMoney.Length - 2)
- {
- LowerMoney = LowerMoney + "0";
- }
- }
- else
- {
- LowerMoney = LowerMoney + ".00";
- }
- strLower = LowerMoney;
- iTemp = 1;
- strUpper = "";
- while (iTemp <= strLower.Length)
- {
- switch (strLower.Substring(strLower.Length - iTemp, 1))
- {
- case ".":
- strUpart = "圆";
- break;
- case "0":
- strUpart = "零";
- break;
- case "1":
- strUpart = "壹";
- break;
- case "2":
- strUpart = "贰";
- break;
- case "3":
- strUpart = "叁";
- break;
- case "4":
- strUpart = "肆";
- break;
- case "5":
- strUpart = "伍";
- break;
- case "6":
- strUpart = "陆";
- break;
- case "7":
- strUpart = "柒";
- break;
- case "8":
- strUpart = "捌";
- break;
- case "9":
- strUpart = "玖";
- break;
- }
- switch (iTemp)
- {
- case 1:
- strUpart = strUpart + "分";
- break;
- case 2:
- strUpart = strUpart + "角";
- break;
- case 3:
- strUpart = strUpart + "";
- break;
- case 4:
- strUpart = strUpart + "";
- break;
- case 5:
- strUpart = strUpart + "拾";
- break;
- case 6:
- strUpart = strUpart + "佰";
- break;
- case 7:
- strUpart = strUpart + "仟";
- break;
- case 8:
- strUpart = strUpart + "万";
- break;
- case 9:
- strUpart = strUpart + "拾";
- break;
- case 10:
- strUpart = strUpart + "佰";
- break;
- case 11:
- strUpart = strUpart + "仟";
- break;
- case 12:
- strUpart = strUpart + "亿";
- break;
- case 13:
- strUpart = strUpart + "拾";
- break;
- case 14:
- strUpart = strUpart + "佰";
- break;
- case 15:
- strUpart = strUpart + "仟";
- break;
- case 16:
- strUpart = strUpart + "万";
- break;
- default:
- strUpart = strUpart + "";
- break;
- }
- strUpper = strUpart + strUpper;
- iTemp = iTemp + 1;
- }
- strUpper = strUpper.Replace("零拾", "零");
- strUpper = strUpper.Replace("零佰", "零");
- strUpper = strUpper.Replace("零仟", "零");
- strUpper = strUpper.Replace("零零零", "零");
- strUpper = strUpper.Replace("零零", "零");
- strUpper = strUpper.Replace("零角零分", "整");
- strUpper = strUpper.Replace("零分", "整");
- strUpper = strUpper.Replace("零角", "零");
- strUpper = strUpper.Replace("零亿零万零圆", "亿圆");
- strUpper = strUpper.Replace("亿零万零圆", "亿圆");
- strUpper = strUpper.Replace("零亿零万", "亿");
- strUpper = strUpper.Replace("零万零圆", "万圆");
- strUpper = strUpper.Replace("零亿", "亿");
- strUpper = strUpper.Replace("零万", "万");
- strUpper = strUpper.Replace("零圆", "圆");
- strUpper = strUpper.Replace("零零", "零");
- // 对壹圆以下的金额的处理
- if (strUpper.Substring(0, 1) == "圆")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "零")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "角")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "分")
- {
- strUpper = strUpper.Substring(1, strUpper.Length - 1);
- }
- if (strUpper.Substring(0, 1) == "整")
- {
- strUpper = "零圆整";
- }
- functionReturnValue = strUpper;
- if (IsNegative == true)
- {
- return "负" + functionReturnValue;
- }
- else
- {
- return functionReturnValue;
- }
- }
- public static string moneyToChinese(string money)
- {
- /*
- //将小写金额转换成大写金额
- double MyNumber = Convert.ToDouble(money);
- string je= money.ToString();
- String[] MyScale = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" }; //定义单位字符串数组
- String[] MyBase = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //定义数字字符串数组
- String M = "";
- bool isPoint = false;
- if (je.IndexOf(".") != -1)
- {
- je = je.Remove(je.IndexOf("."), 1);
- isPoint = true;
- }
- for (int i = je.Length; i > 0; i--)
- {
- int MyData = Convert.ToInt16(je[je.Length - i].ToString());//获取money中的数字,并转换为浮点型
- M += MyBase[MyData];//从mybase中取出同index的数字的汉字字符
- if (isPoint == true)
- {
- M += MyScale[i - 1];//获取单位
- }
- else
- {
- M += MyScale[i + 1];//获取单位
- }
- }
- return M; //返回转换的金额字符串*/
- return "无语了";
- }
- }
- }
|