人民币大小写转换算法

上传人:子 文档编号:41817333 上传时间:2018-05-31 格式:DOC 页数:12 大小:46.50KB
返回 下载 相关 举报
人民币大小写转换算法_第1页
第1页 / 共12页
人民币大小写转换算法_第2页
第2页 / 共12页
人民币大小写转换算法_第3页
第3页 / 共12页
人民币大小写转换算法_第4页
第4页 / 共12页
人民币大小写转换算法_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《人民币大小写转换算法》由会员分享,可在线阅读,更多相关《人民币大小写转换算法(12页珍藏版)》请在金锄头文库上搜索。

1、人民币大小写转换算法人民币大小写转换算法人民币大小写转换算法1.先把你的金额转换成 Chat String 类型;2.把 Chat Strin 类型的金额变量已小数点为界分成两个部分; 3.分别用两个转换函数对小数点左右部分进行转换AnsiString ChineseNumber(AnsiString num) num.Delete(num.Length()-2,1);/删除小数点 num.Insert(num.StringOfChar(0,8-num.Length(),1); AnsiString retval=“,CNum=“零壹贰叁肆伍陆柒捌玖“,CUnit=“拾万仟佰拾元角分“; fo

2、r(int p,i=1;i0 RETVAR = SUBSTR(NUMBER,2*(MOD(RMB,10)+1,2)+LEFT(UNIT,2)+RETVAR RMB = INT(RMB/10) UNIT = SUBSTR(UNIT,3) ENDDO RETVAR = STRTRAN(RETVAR,零仟,零) RETVAR = STRTRAN(RETVAR,零佰,零) RETVAR = STRTRAN(RETVAR,零拾,零) RETVAR = STRTRAN(RETVAR,零角,零) DO WHILE 零零$RETVAR RETVAR = STRTRAN(RETVAR,零零,零) ENDDO R

3、ETVAR = STRTRAN(RETVAR,零亿,亿) RETVAR = STRTRAN(RETVAR,零万,万) RETVAR = STRTRAN(RETVAR,亿万,亿零) RETVAR = STRTRAN(RETVAR,零零,零) RETVAR = STRTRAN(RETVAR,零圆,圆) RETVAR = STRTRAN(RETVAR,零分,整) RETVAR = IIF(LEN(RETVAR)=0,零圆整,RETVAR) RETURN RETVAR例 4/改编 inRm function NumToChar( n:Real): wideString; /可以到万亿,并可随便扩大

4、const cNum:WideString=零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分; cCha:array0.1, 0.11of string = ( 零仟,零佰,零拾,零零零,零零, 零亿,零万,零元,亿万,零角,零分,零整), ( 零,零,零,零,零,亿,万,元,亿,零,整,整); var i :Integer; sNum :WideString; begin result := ; sNum := FormatFloat(0,n*100); for i := 1 to Length(sNum) do result := result + cNumord(sNumi)-47

5、+ cNum26-Length(sNum)+i; for i:= 0 to 11 do /去掉多余的零 result := StringReplace(result, cCha0,i, cCha1,i, rfReplaceAll); end;例 5. JAVA 算法package amountchange; import java.math.BigDecimal; import org.omg.CORBA.TRANSIENT; public class AmountChange2RMB private static String bigLetter = “零“, “壹“, “贰“, “叁“,

6、“肆“, “伍“, “陆“, “柒“, “捌“, “玖“ ; private static String unit = “元“, “拾“, “佰“, “仟“, “万“, “拾“, “佰“, “仟“, “亿“, “拾“, “佰“, “仟“, “万“ ; private static String unitSmall = “分“, “角“ ; public static void main(String args) String testStrs = “1234567888888.100“/* 大十进制数 */, “1001“/* 没有小数,且含相邻的两个零 */, “101005.1“/*零在单

7、位所处的位置*/, “1010“/*零在元位*/ ; System.out.println(new BigDecimal(testStrs2).toString(); System.out.println(trans(testStrs2); public static String trans(String str) BigDecimal dec = check2BigDecimal(str); if (dec = null) return null; str = dec.toPlainString(); String sArr = str.split(“.“); String intOnly

8、 = sArr0; String smallOnly = “; if (sArr.length = 2) smallOnly = sArr1; if (smallOnly.length() 2) smallOnly = smallOnly.substring(0, 2); return transInt(intOnly) + transSmall(smallOnly); public static String transInt(String str) if (“0“.equals(str) return “; StringBuffer newS = new StringBuffer(); c

9、har cArr = str.toCharArray(); for (int i = 0; i = 0) / 如果零在个位:需要加上单位“元” if (position = 0) newS.append(unitcArr.length - i - 1); continue; else / 如果零不在个位 / 零不在个位,且这个位后,紧跟着一个零:只需要加上单位 if (i s4.length()-3) return(“输入字串最大只能精确到仟亿,小数点只能两位!“); int n1=0; String num=“; String unit=“; for(int i=0;ilen+2)break

10、; if(i=len) continue; n1=Integer.parseInt(String.valueOf(temp.charAt(i); num=s1.substring(n1,n1+1); n1=len-i+2; unit=s4.substring(n1,n1+1); result=result.concat(num).concat(unit); if(len=temp.length()|(len=temp.length()-1) result=result.concat(“整“); if(len=temp.length()-2) result=result.concat(“零分“)

11、; return result; 例 6 JAVA 算法public class NumToChinese public static String NumberToChinese(String input)String s1=“零壹贰叁肆伍陆柒捌玖“;String s4=“分角整元拾佰仟万拾佰仟亿拾佰仟“;String temp=“;String result=“;if (input=null) return “输入的字串不是数字串只能包括以下字符(09,.),输入字串最大只能精确到仟亿,小数点只能两位!“;temp=input.trim();float f;tryf=Float.parse

12、Float(temp);catch(Exception e)return “输入的字串不是数字串只能包括以下字符(09,.),输入字串最大只能精确到仟亿,小数点只能两位!“;int len=0;if(temp.indexOf(“.“)=-1) len=temp.length();else len=temp.indexOf(“.“);if(lens4.length()-3) return(“输入字串最大只能精确到仟亿,小数点只能两位!“);int n1=0;String num=“;String unit=“;for(int i=0;ilen+2)break;if(i=len) continue

13、;n1=Integer.parseInt(String.valueOf(temp.charAt(i);num=s1.substring(n1,n1+1);n1=len-i+2;unit=s4.substring(n1,n1+1);result=result.concat(num).concat(unit);if(len=temp.length()|(len=temp.length()-1) result=result.concat(“整“);if(len=temp.length()-2) result=result.concat(“零分“);return result;例 7import ja

14、va.text.DecimalFormat; public class helloworld public static void main(String args) / TODO 自动生成方法存根 double inputvalue = 1234567890123.312030; if(inputvalue = 0) System.out.print( “零 “); return; String stringvalue,sintvalue,sdecvalue; DecimalFormat ss = new DecimalFormat( “0.00 “); stringvalue = ss.format(inputvalue); int decbit; decbit = stringvalue.indexOf( “. “); if(decbit = 0) sintvalue = stringvalue; sdecvalue = “ “; else sintvalue = stringvalue.substring(0,decbit); sdecvalue = stringvalue.substring(decbit + 1); String chesenumunit

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号