人民币大小写转换 代码
大小写金额转换

*大小写金额转换DA TA: L_DXSTR(60). "大写金额DA TA: HJ_JFJE LIKE BSEG-WRBTR. "小写金额HJ_JFJE = '234687.88'.PERFORM XX_CHANGE_DX USING HJ_JFJE CHANGING L_DXSTR.*FORM XX_CHANGE_DX using valchanging dxstr.DA TA: ZS(15).DA TA: XS(15).DA TA: STR(15).DA TA: LEN TYPE I V ALUE 0.DA TA: CIS TYPE I V ALUE 0.DA TA: SS(2).DA TA: RR(1).DA TA: STRR(15).DA TA: change(30) TYPE C V ALUE '1壹2贰3叁4肆5伍6陆7柒8捌9玖0零'.CLEAR DXSTR.MOVE V AL TO STR.SHIFT STR LEFT DELETING LEADING SPACE.SPLIT STR A T '.' INTO ZS XS.LEN = STRLEN( ZS ).CLEAR STRR.CIS = LEN - 1.DO LEN TIMES.MOVE ZS+CIS(1) TO RR.CONCA TENA TE STRR RR INTO STRR.CIS = CIS - 1.ENDDO.CIS = 0.DO LEN TIMES.MOVE STRR+CIS(1) TO SS.TRANSLA TE SS USING change.CASE CIS.WHEN 0. CONCA TENA TE SS '元' INTO DXSTR.WHEN 1. CONCA TENA TE SS '拾' DXSTR INTO DXSTR.WHEN 2. CONCA TENA TE SS '佰' DXSTR INTO DXSTR.WHEN 3. CONCA TENA TE SS '仟' DXSTR INTO DXSTR.WHEN 4. CONCA TENA TE SS '万' DXSTR INTO DXSTR.WHEN 5. CONCA TENA TE SS '拾' DXSTR INTO DXSTR.WHEN 6. CONCA TENA TE SS '佰' DXSTR INTO DXSTR.WHEN 7. CONCA TENA TE SS '仟' DXSTR INTO DXSTR.WHEN 8. CONCA TENA TE SS '亿' DXSTR INTO DXSTR.WHEN 9. CONCA TENA TE SS '拾' DXSTR INTO DXSTR.WHEN 10. CONCA TENA TE SS '百' DXSTR INTO DXSTR.WHEN 11. CONCA TENA TE SS '仟' DXSTR INTO DXSTR.ENDCASE.CIS = CIS + 1.ENDDO.CLEAR SS.IF XS <> '00'.MOVE XS+0(1) TO SS. TRANSLA TE SS USING change.CONCA TENA TE DXSTR SS '角' INTO DXSTR.MOVE XS+1(1) TO SS. TRANSLA TE SS USING change.CONCA TENA TE DXSTR SS '分' INTO DXSTR.ENDIF.CONCA TENA TE DXSTR '整' INTO DXSTR.ENDFORM. " XX_CHANGE_DX我的程序写的比较粗糙,转换方法比较笨。
[算法题]人民币大小写转换(阿拉伯数字和汉字转换)
![[算法题]人民币大小写转换(阿拉伯数字和汉字转换)](https://img.taocdn.com/s3/m/ac3438f6c9d376eeaeaad1f34693daef5ef7135c.png)
[算法题]⼈民币⼤⼩写转换(阿拉伯数字和汉字转换)在⼀次⾯试中遇到⼀个有意思的⼩算法题:要求将阿拉伯数字转为汉字显⽰出来(包含单位)。
当时虽然实现出来,但是代码写的有点凌乱。
所以回家后,重新整理了⼀下。
这个算法有⼏个⼩的注意点:1、中⽂字符占两个字节,所以如果⽤C语⾔实现,需要⽤char数组的形式保存单个汉字。
2、如果数字中出现连续的零,需要把它替换为单⼀的零。
3、在亿、万、元的前⾯⼀个汉字不可以为零(⼈民币读取⽅式决定)。
4、double数值可分为整数部分和⼩数部分。
⼩数部分较简单,整数部分需要根据这个数字所在的位数匹配上对应的单位。
具体⽅法是:设置⼀个单位映射字符串表g_strUnit,可视为⼀个简单的HashTable。
然后从头开始读取整数字符串的每个字符,若这个字符在整数字符串的位置为i,这个字符后⾯的单位就是g_strUnit[length-1-i]。
代码如下/*******************************************************************************Project Code : AccountFile name :Author : LatteDescription : 阿拉伯数字转为中⽂字符串Function List :--------------------------------------------------------------------------------History:Date Author Modification20140703 Latte created file.*******************************************************************************/#include "stdafx.h"#include <string>#include <iostream>using namespace std;#define MAX 100string g_strDigit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};string g_strUnit[] = {"圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿","拾", "佰", "仟", "万", "拾", "佰"};string g_strUnit2[] = {"⾓", "分"};/*******************************************************************************Func Name : ReplaceSubStrDate Created : 2014-07-03Author : LatteDescription : 将源字符串strOrig中第⼀个匹配strSub的⼦串部分替换为strReplaceInput :string &strOrig,string strSub,string strReplaceOutput :string &strOrigReturn :intCaution : 返回值如果为-1,则表⽰替换失败或未找到替换项*******************************************************************************/int ReplaceSubStr(string &strOrig, string strSub, string strReplace){int pos = (int)strOrig.find(strSub);int length = (int)strSub.length();if (pos >= 0){strOrig.replace(pos, length, strReplace);return0;}return -1;}/******************************************************************************* Func Name : NumToChineseStrDate Created : 2014-07-03Author : LatteDescription :将⼈民币double数值转化为⼈民币汉字stringInput :double moneyOutput :Return :stringCaution :*******************************************************************************/ string NumToChineseStr(double money){int i = 0;int ret = 0;int length = 0;char *p = NULL;char *pcDecimal = NULL; //保存⼩数部分字符char czNumber[MAX] = {0}; //保存完整数字部分字符string strResult;cout << "======================================" << endl;cout << money << endl;//判断是否为⼩数if (money < 0){strResult = "不⽀持读负数";return strResult;}//将数字转为数字字符串,利⽤sprintf_s的正则转换sprintf_s(czNumber, MAX, "%.15lg", money);printf("[No.0]%s\n", czNumber);//如果数字是太⼤或太⼩的数,因为已经转为科学计数,所以会含有e字符 p = strchr(czNumber,'e');if (NULL!=p){strResult = "不⽀持读太⼤或太⼩的数";return strResult;}p = strchr(czNumber, '.');if (NULL != p){p[0] = 0;pcDecimal = p + 1;}length = (int)strlen(czNumber);for (i = 0; i<length; i++){if ('0' == czNumber[i] && 0 != ((length-1-i) % 4)){strResult += g_strDigit[czNumber[i] - '0'];else{strResult += g_strDigit[czNumber[i] - '0'] + g_strUnit[length-1-i];}}cout << "[No.1]把数字直接替换为汉字: \n" << strResult << endl;//把strResult中的所有"零零"⼦串替换为"零"while (1){ret = ReplaceSubStr(strResult, "零零", "零");if (ret < 0){break;}}cout << "[No.2]替换所有零零为零: \n" << strResult << endl;ReplaceSubStr(strResult, "零亿", "亿");ReplaceSubStr(strResult, "零万", "万");if (strResult != "零圆") //如果整数部分全为0,则不要去除元单位前⾯的零 {ReplaceSubStr(strResult, "零圆", "圆");}cout << "[No.3]去除零亿、零万、零圆前⾯的零: \n" << strResult << endl;//⼩数精确到两位数,即精确到单位分if (NULL != pcDecimal){//如果⼩数部分有数值⽽整数部分为0,则删除字符串中的零元if (strResult == "零圆"){strResult.clear();}i = 0;while (1){if (0 == pcDecimal[i] || i >= 2)break;strResult += g_strDigit[pcDecimal[i] - '0'] + g_strUnit2[i];i++;}}cout << "[No.4]⼩数精确到两位数,即精确到单位分: \n" << strResult << endl; return strResult;}int main(void){//cout << "Result: " << NumToChineseStr(0.00) << endl;//cout << "Result: " << NumToChineseStr(-345.67) << endl;//cout << "Result: " << NumToChineseStr(1000.0) << endl;cout << "Result: " << NumToChineseStr(130040600090.012) << endl; return0;}结果。
使用C#实现阿拉伯数字到大写中文的转换

使⽤C#实现阿拉伯数字到⼤写中⽂的转换先记下来,以备后⽤!/// <summary>/// ⾦额转为⼤写⾦额/// </summary>public class MoneyConvertChinese{/// <summary>/// ⾦额转为⼤写⾦额/// </summary>/// <param name="LowerMoney"></param>/// <returns></returns>public string MoneyToChinese(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.4LowerMoney = 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;}}}测试代码:static void Main(string[] args){Console.Write("请输⼊要转成⼤写的数字:");string str = Console.ReadLine();Console.WriteLine("⼤写:" + new MoneyConvertChinese().MoneyToChinese(str)); Console.ReadLine();}测试结果:下⾯是其它⽹友的补充:using System;namespace ConsoleApp{/// <summary>/// 本类实现阿拉伯数字到⼤写中⽂的转换/// 该类没有对⾮法数字进⾏判别/// 请调⽤NumToChn⽅法/// </summary>public class NumFormat{public NumFormat(){//// TODO: 在此处添加构造函数逻辑//}// 转换数字private char ToNum(char x){string strChnNames="零⼀⼆三四五六七⼋九";string strNumNames="0123456789";return strChnNames[strNumNames.IndexOf(x)];}// 转换万以下整数private string ChangeInt(string x){string[] strArrayLevelNames=new string[4] {"","⼗","百","千"}; string ret = "";int i;for (i=x.Length-1;i>=0;i--)if (x[i] == '0')ret = ToNum(x[i]) + ret;elseret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret; while ((i=ret.IndexOf("零零"))!=-1)ret=ret.Remove(i, 1);if (ret[ret.Length-1]=='零' && ret.Length>1)ret=ret.Remove(ret.Length-1,1);if (ret.Length>=2 && ret.Substring(0,2)=="⼀⼗")ret=ret.Remove(0,1);return ret;}// 转换整数private string ToInt(string x){int len = x.Length;string ret,temp;if (len<=4)ret = ChangeInt(x);else if (len<=8){ret = ChangeInt(x.Substring(0,len-4)) + "万";temp = ChangeInt(x.Substring(len-4,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;}else{ret=ChangeInt(x.Substring(0,len-8)) + "亿";temp=ChangeInt(x.Substring(len-8,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;ret += "万";temp = ChangeInt(x.Substring(len-4,4));if (temp.IndexOf("千")==-1 && temp!="")ret += "零" + temp;elseret += temp;}int i;if ((i=ret.IndexOf("零万"))!=-1)ret = ret.Remove(i+1,1);while ((i=ret.IndexOf("零零"))!=-1)ret = ret.Remove(i,1);if (ret[ret.Length-1]=='零' && ret.Length>1)ret = ret.Remove(ret.Length-1,1);return ret;}private string ToDecimal(string x){string ret="";for (int i=0;i<x.Length;i++)ret += ToNum(x[i]);return ret;}public string NumToChn(string x){if (x.Length==0)return "";string ret="";if (x[0]=='-'){ret="负";x=x.Remove(0,1);}if (x[0].ToString()==".")x="0"+x;if (x[x.Length-1].ToString()==".")x=x.Remove(x.Length-1,1);if (x.IndexOf(".")>-1)ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1)); elseret += ToInt(x);return ret;}}}测试⼯程using System;namespace ConsoleApp{class MainClass{static void Main(string[] args){/*System.Console.WriteLine("Hello, The World!");System.Console.WriteLine("My Love!");ClassTest ct = new ClassTest();System.Console.WriteLine(ct.Get_Str());*//*// 重载运算符MyVector v1 = new MyVector(5, 12);MyVector v2 = new MyVector(4, 3);MyVector v3 = new MyVector();v3 = v1 + v2;System.Console.WriteLine("{0}测试⼀下", v3.Length);*/// 转换成⼤写数字NumFormat nf = new NumFormat();string x;while (true){Console.Write("X=");x = Console.ReadLine();if (x == "") break;Console.WriteLine("{0}={1}", x, nf.NumToChn(x));}}}}。
人民币金额大写转换

人民币金额大写转换
金额大写转换器的使用说明:
1.首先将小写数字填写或者复制到“输入小写数字金额”中。
(不得用中文数字填写,必须使用用阿拉伯数字填写。
)
2.然后点击“转换为大写金额”的按钮,即可将输入的金额转换为大写数字。
例如:输入“123456”,点击转换按钮后即可自动转换为大写金额“壹拾贰万叁仟肆佰伍拾陆元整”。
3.最后点击“复制到粘贴板”按钮,把转换完成的大写数字内容复制到所需填写的地方粘贴即可。
注意:输入的数字可以包含小数点(例如9999.99),也可以写成千进制(例如9,999.99),小写数字中的逗号和点必须是英文符号。
币种缩写货币符号
人民币RMB(CNY) ¥
美元USD $
欧元EUR €
英镑GBP £
(货币符号可直接鼠标选中复制后使用)。
人民币大写-使用说明:
1.正确的大写金额数字为:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等。
2.中文大写金额数字前应加上“人民币”字样,大写金额数字紧接“人民币”字样,不可留有空白。
例如:人民币贰拾万陆仟元零柒角伍分。
大小写转换-使用说明:
1.大写金额以「元」结尾的,应在最后写「整」(或「正」)结尾;
2.以「角」结尾的,结尾可以不写「整」(或「正」);
3.以「分」结尾的,结尾不写「整」(或「正」);。
例表.人民币大小写之间的转换2

小写金额大写金额¥521.23伍佰贰拾壹元贰角叁分¥23.00贰拾叁元整¥125.20壹佰贰拾伍元贰角整¥348.00叁佰肆拾捌元整¥15.00壹拾伍元整¥23.21贰拾叁元贰角壹分给你一个,放在工具里:Function convert_digital_chinese(ByVal Myinput)Dim Temp, TempA, MyinputA, MyinputB, MyinputCDim Place As StringDim J As IntegerPlace = "分角元拾佰仟万拾佰仟亿拾佰仟万"shuzi1 = "壹贰叁肆伍陆柒捌玖"shuzi2 = "整零元零零零万零零零亿零零零万"qianzhui = ""If Myinput < 0 Then qianzhui = "负"Myinput = Int(Abs(Myinput) * 100 + 0.5)If Myinput > 999999999999999# Thenmychange = "数字太大了吧???"Exit FunctionEnd IfIf Myinput = 0 Thenmychange = "零元零分"Exit FunctionEnd IfMyinputA = Trim(Str(Myinput))shuzilong = Len(MyinputA)For J = 1 To shuzilongMyinputB = Mid(MyinputA, J, 1) & MyinputBNextFor J = 1 To shuzilongTemp = Val(Mid(MyinputB, J, 1))If Temp = 0 ThenMyinputC = Mid(shuzi2, J, 1) & MyinputCElseMyinputC = Mid(shuzi1, Temp, 1) & Mid(Place, J, 1) & MyinputC End IfNextshuzilong = Len(MyinputC)For J = 1 To shuzilong - 1If Mid(MyinputC, J, 1) = "零" ThenSelect Case Mid(MyinputC, J + 1, 1)Case "零", "元", "万", "亿", "整":MyinputC = Left(MyinputC, J - 1) & Mid(MyinputC, J + 1, 30)J = J - 1End SelectEnd IfNextshuzilong = Len(MyinputC)For J = 1 To shuzilong - 1If Mid(MyinputC, J, 1) = "亿" And Mid(MyinputC, J + 1, 1) = "万" Then MyinputC = Left(MyinputC, J) & Mid(MyinputC, J + 2, 30)Exit ForEnd IfNextmychange = qianzhui & Trim(MyinputC)。
C#实现人民币大写转换示例代码

C#实现⼈民币⼤写转换⽰例代码复制代码代码如下:/// <summary>/// ⼈民币⼤写/// </summary>/// <param name="input">待转换输⼊</param>/// <param name="prefix">需要添加⼈民币前缀</param>/// <exception cref="ArgumentException" />/// <returns>转换后的结果</returns>public static string ToCapital(this string input, bool prefix = false) {#region Step1 输⼊有效性验证if (!Regex.IsMatch(input, @"(?<=-|^)\d*\.?\d*$"))throw new ArgumentException("错误的输⼊⾦额!");if (Regex.IsMatch(input, @"^\d{25,}"))throw new ArgumentException("输⼊数据太⼤⽆法转换!");#endregion#region Step2 格式化为中间字符串var positionDic = new Dictionary<int, string> {{0,"F"},{1,"J"},{2,"."},{3,"S"},{4,"B"},{5,"Q"},{6,"W"},{7,"SW"},{8,"BW"},{9,"QW"},{10,"Y"},{11,"SY"},{12,"BY"},{13,"QY"},{14,"WY"},{15,"SWY"},{16,"BWY"},{17,"QWY"},{18,"YY"},{19,"SYY"},{20,"BYY"},{21,"QYY"},{22,"WYY"},{23,"SWYY"},{24,"BWYY"},{25,"QWYY"}};input = Regex.Replace(input, @"^\.", "0.");var integerPart = Regex.Replace(input, @"^-|\..*$", "");var _matchDecimal = Regex.Match(input, @"\.\d*$", RegexOptions.None);var decimalPart = Regex.Replace(_matchDecimal.Success ? Convert.ToDouble(_matchDecimal.Value).ToString("0.00") : "00", @"0\.", "");var processStack = new Stack<string>();var charsArray = (integerPart + decimalPart).Reverse<char>();for (int i = 0; i < charsArray.Count(); i++) {processStack.Push(string.Format("{0}{1}", charsArray.ElementAt(i), positionDic[i]));}//符号处理 if (Regex.IsMatch(input, "^-", RegexOptions.None)) {processStack.Push("-");}if (prefix) {processStack.Push("¥");}var process = string.Empty;while (processStack.Count > 0) {process += processStack.Pop();}//语义处理模式队列Queue<Tuple<string, string, MatchEvaluator>> patterns = new Queue<Tuple<string, string, MatchEvaluator>>();var patternBuilder = new StringBuilder();for (int i = 3; i < positionDic.Count; i++) {patternBuilder.AppendFormat("{0}{1}", (i == 3 ? "(0(?:" : "") + positionDic[i], i == positionDic.Count - 1 ? ")+?)+" : "|");}patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(patternBuilder.ToString(), "0", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:\d+(?:QW|BW|SW|W|Q|B|S)?\d?YY)+", null, m => m.Value.Replace("YY", "") + "YY"));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:\d+(?:QW|BW|SW|W|Q|B|S)?\d?Y)+", null, m => m.Value.Replace("Y", "") + "Y"));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?:\d+(?:Q|B|S)?\d?W)+", null, m =>m.Value.Replace("W", "") + "W"));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"(?!^)0+\.", ".", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"^0\.0J|^0\.", "", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>("0J|0F", "0", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>("J0?$", "JZ", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"\.$|\.0+$", ".Z", null));patterns.Enqueue(Tuple.Create<string, string, MatchEvaluator>(@"^0+$|^[^.]{0}$", "0.Z", null));while (patterns.Count > 0) {var pattern = patterns.Dequeue();if (pattern.Item3 != null) {process = Regex.Replace(process, pattern.Item1, pattern.Item3);}else {process = Regex.Replace(process, pattern.Item1, pattern.Item2);}}#endregion#region Step3 翻译中间字符串StringBuilder result = new StringBuilder();var translatorDic = new Dictionary<char, string> {{'0',"零"},{'1',"壹"},{'2',"贰"},{'3',"叁"},{'4',"肆"},{'5',"伍"},{'6',"陆"},{'7',"柒"},{'8',"捌"},{'9',"玖"},{'S',"拾"},{'B',"佰"},{'Q',"仟"},{'W',"萬"},{'Y',"亿"},{'¥',"⼈民币"},{'-',"负"},{'.',"圆"},{'J',"⾓"},{'F',"分"},{'Z',"整"}};for (int i = 0; i < process.Length; i++) {result.Append(translatorDic[process[i]]);}#endregionreturn result.ToString();}。
Javascript-将人民币数字转换成大写形式
用JavaScript编写了一功能函数,完成如下功能:1、对一给定字符串,如:1234.55,转换成正确的中文货币描述:如:人民币壹仟贰佰叁拾四元五角五分2、输入的字符串形式可以是以下几种:带分隔符的,如:123,456,789.00;不带分隔符的,如:1234567893、输出的中文货币描述要符合规范,如:0.3----人民币三角;0.33----人民币三角三分;1----人民币壹元整100----人民币壹佰元整;1001----人民币壹仟零壹元整;10000001----人民币壹仟万零壹元整;1001001----人民币壹仟零壹万零壹元整,等4、最大转换能到百亿具体的代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title></title><script language="jscript">function convertCurrency(currencyDigits) {// Constants:var MAXIMUM_NUMBER = 99999999999.99;// Predefine the radix characters and currency symbols for output:var CN_ZERO = "零";var CN_ONE = "壹";var CN_TWO = "贰";var CN_THREE = "叁";var CN_FOUR = "肆";var CN_FIVE = "伍";var CN_SIX = "陆";var CN_SEVEN = "柒";var CN_EIGHT = "捌";var CN_NINE = "玖";var CN_TEN = "拾";var CN_HUNDRED = "佰";var CN_THOUSAND = "仟";var CN_TEN_THOUSAND = "万";var CN_HUNDRED_MILLION = "亿";var CN_SYMBOL = "人民币";var CN_DOLLAR = "元";var CN_TEN_CENT = "角";var CN_CENT = "分";var CN_INTEGER = "整";// Variables:var integral; // Represent integral part of digit number.var decimal; // Represent decimal part of digit number.var outputCharacters; // The output result.var parts;var digits, radices, bigRadices, decimals;var zeroCount;var i, p, d;var quotient, modulus;rrencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters. currencyDigits = currencyDigits.replace(/。
vb源程序-人民币大写
Private Sub Text2_Change() '小写转大写Dim i As IntegerDim j As IntegerDim myint As IntegerDim myint1 As IntegerDim mydoub As DoubleDim mystr As StringDim mystr1 As StringDim mystr2 As StringDim mystr3 As StringDim mystr4 As StringDim money As LongDim money1 As IntegerDim money2 As Longmystr = Text2.Textmyint = InStr(mystr, ".")If myint = 0 Thenmystr = Text2.TextElsemystr3 = Right(Text2.Text, Len(Text2.Text) - myint)If mystr3 <> "" Then '转换小数位mystr4 = Left(mystr3, 1)mystr3 = Right(mystr3, Len(mystr3) - 1)If mystr4 <> "0" Thenmystr2 = mystr2 + setdata(Val(mystr4)) + "角"End IfIf mystr3 <> "" Thenmystr4 = Left(mystr3, 1)mystr2 = mystr2 + setdata(Val(mystr4)) + "分"End IfEnd Ifmystr = Left(Text2.Text, myint - 1)End Ifj = Len(mystr)For i = 1 To Len(mystr) '转换整数位money2 = Left(mystr, i)money1 = Right(money2, 1)If money1 = 0 ThenIf j = 5 ThenIf Right(mystr1, 1) <> "万" Then mystr1 = mystr1 & "万"ElseIf Right(mystr1, 1) <> "零" And Right(money, j) = 0 Then mystr1 = mystr1 & "零"End IfElsemystr1 = mystr1 & setdata(money1) + chang(j)End IfText1.Text = mystr1 & "元" & mystr2 '显示大写Dim MyPos As IntegerMyPos = InStr(1, Text1.Text, "零元", 1)If MyPos <> 0 ThenText1.Text = Left(Text1.Text, MyPos - 1) & "元" & mystr2 '显示大写End IfEnd SubPrivate Sub Command1_Click()EndEnd SubPrivate Function setdata(num As Integer) As String '数字转换Select Case numCase 0setdata = "零"Case 1setdata = "壹"Case 2setdata = "贰"Case 3setdata = "叁"Case 4setdata = "肆"Case 5setdata = "伍"Case 6setdata = "陆"Case 7setdata = "柒"Case 8setdata = "捌"Case 9setdata = "玖"End SelectEnd FunctionPrivate Function chang(aaa As Integer) As String '位数转换Select Case aaaCase 1chang = ""Case 2chang = "十"Case 3chang = "百"Case 4chang = "万" Case 6chang = "十" Case 7chang = "百" Case 8chang = "千" Case 9chang = "亿" Case 10chang = "十" End SelectEnd Function。
人民币大小写转换(C#)
⼈民币⼤⼩写转换(C#)今天写了⼀个C#版本的⼤⼩写转换类,想着也要更新⼀下我的⽇记了,便把它传了上来。
哪位路过的⾼⼿,请指点。
这个类提供了⼀个静态⽅法叫做 Convert ( double ),传⼊⼀个9千万亿以内的数值它都能正确的转换为中⽂的⼤写。
基本的思路是将传⼊的数据分为整数部分和⼩数部分分别来处理,⼩数部分的处理⽐较简单,整数部分的处理我作了相应的注释。
1using System;23namespace Tools{4///<summary>5/// DigitalToChinese :实现将⼈民币的数字形式转换为中⽂格式。
6///</summary>7public class DigitalToChinese8 {9public DigitalToChinese(){10 }1112public static string Convert ( double digital ){13if ( digital == 0.00f )14return "零元整";1516string buf = ""; /* 存放返回结果 */17string strDecPart = ""; /* 存放⼩数部分的处理结果 */18string strIntPart = ""; /* 存放整数部分的处理结果 */1920/* 将数据分为整数和⼩数部分 */21char [] cDelim = {'.'};22string [] tmp = null;23string strDigital = digital.ToString ();24if ( strDigital[0] =='.'){ /* 处理数据⾸位为⼩数点的情况 */25 strDigital = "0" + strDigital;26 }27 tmp = strDigital.Split ( cDelim,2);2829/* 整数部分的处理 */30if ( tmp[0].Length > 15 ) {31throw new Exception ("数值超出处理范围。
金额小写转大写 Borland C++ Bulider 6.0 BCB 源代码 Source Code
if (i==0) XiaoXieStr=s+"00"; //如果是整数,没有小数点补两位角分, 缺陷如是有3位小数出错
else if (i==s.Length()) XiaoXieStr=s+"00";
else if (i==s.Length()-1) XiaoXieStr=s+"0";
MidDX.Delete(1,2); //如果第一位是元, 去掉比如0.01,0.11
if ((MidDX.SubString(1,2)=="零") )
MidDX.Delete(1,2); //如果第一位是零, 去掉 比如0.01
if ((MidDX.SubString(MidDX.Length()-3,4)=="元零") )
{MidDX=MidDX.SubString(1,MidDX.Length()-2)+"整";
return MidDX; }
if ((MidDX.SubString(MidDX.Length()-3,4)=="角零" ))
//阿拉伯金额数字元位是“0”,或数字中间连续有几个“0”,元位也是“0”,但角位不是“0”时,汉字大写金额可只写一个“零”字,也可不写“零”字,
//如¥1,320.56,汉字大写金额应写成人民币壹仟叁佰贰拾圆零伍角陆分,或人民币壹仟叁佰贰拾圆伍角陆分。
//又如¥1,000.56,汉字大写金额应写成人民币壹仟圆零伍角陆分,或人民币壹仟圆伍角陆分。
if (MidDX.SubString(oi,4)=="零零" )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人民币大小写转换代码
人民币是我国的法定货币,其大小写转换是我们日常生活中经常涉及的问题。
下面我将为大家介绍一段可以实现人民币大小写转换的代码,希望对大家有所帮助。
代码如下:
```python
def convert_rmb(amount):
units = ['拾', '佰', '仟', '万', '亿']
chars = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
decimals = ['角', '分']
rmb_chars = ['圆']
if amount == 0:
return '零圆整'
result = ''
# 处理整数部分
integer_part = str(int(amount))
for i in range(len(integer_part)):
num = int(integer_part[i])
if num != 0:
result += chars[num] + units[len(integer_part)-i-1]
elif result[-1:] != chars[0]: # 避免连续的零
result += chars[num]
# 处理小数部分
decimal_part = str(round(amount - int(amount), 2))[2:]
if decimal_part != '00':
for i in range(len(decimal_part)):
num = int(decimal_part[i])
if num != 0:
result += chars[num] + decimals[i]
elif result[-1:] != chars[0]: # 避免连续的零
result += chars[num]
# 添加人民币单位
result += rmb_chars[0]
return result
# 测试代码
amount = 1234567.89
print('人民币金额:', amount)
print('人民币大写:', convert_rmb(amount))
```
运行以上代码,可以将人民币的金额转换为大写形式。
代码中使用
了几个列表来存储汉字字符,通过循环遍历金额的整数部分和小数部分,根据对应的索引将阿拉伯数字转换为中文字符,并加上对应的单位,最后返回转换后的结果。
希望以上代码对大家有所帮助,可以方便地实现人民币的大小写转换。
当然,代码中还有很多细节可以进行优化和完善,这只是一个简单的示例。
大家可以根据实际需求进行修改和扩展。