数值转换成大写金额运算

数值转换成大写金额运算在记账时 我们经常用大写汉字代替数字进行记账 而我们在数值运算时往往是采用的阿拉伯数字进行的计算 这时我们就需要用到将阿拉伯数值转换成大写金额的数值转换工具 而这篇代码讲的就是这种数值换算运算 它的大体思想是这样的一

大家好,欢迎来到IT知识分享网。

在记账时,我们经常用大写汉字代替数字进行记账,而我们在数值运算时往往是采用的阿拉伯数字进行的计算,这时我们就需要用到将阿拉伯数值转换成大写金额的数值转换工具,而这篇代码讲的就是这种数值换算运算.

它的大体思想是这样的

一、获取数字阿拉伯数值,假如说该数值是,那自然不用说了,如果是1.2 sw(十万),就应该首先将其转换成.

二、将该数值转换成大写金额,得到如下数值:壹拾万贰万零仟零佰零拾零

三、将该数值去掉万,得到:壹拾贰零仟零佰零拾零

四、补足丢失的万,得到:壹拾贰万零仟零佰零拾零

五、去掉多余的零,如果是去掉的位数为8-16位,则补上单位万,如果说去掉的位数大于16位,则补上亿,最后再加上圆整即可.

下面是其详细的代码:

package com.cnmoney; public class CnMoney { public static String conversionCharToCnMoney(char s,int index){ //s*1是利用自动转型,char乘以整数,可以将char类型转换成整形 //该整形是利用ASCII码中的数值进行计算的,在ASCII码中,0对应十进制中的是48,1对应的是49,依此类推 int number=s*1-48; String str=""; switch(number){ case 0: str="零"; break; case 1: str="壹"; break; case 2: str="贰"; break; case 3: str="叁"; break; case 4: str="肆"; break; case 5: str="伍"; break; case 6: str="陆"; break; case 7: str="柒"; break; case 8: str="捌"; break; case 9: str="玖"; break; } int unit=-1; if(index%4==0){ unit=-1; //个位(不做处理) }else if(index%4==1){ unit=0; //十位 }else if(index%4==2){ unit=1; //百位 }else if(index%4==3){ unit=2; //千位 } //添加十位,百位,千位单位 str+=getBigUnit(unit); if(index/4==0){ unit=-1; //不做处理 }else if(index/4==1){ unit=3; //万位 }else if(index/4==2){ unit=4; //亿位 } str+=getBigUnit(unit); return str; } / * 取整 * @param str 大写金额 * @return */ public static String subStringUnit(String str){ //截取多余的万和亿 int strLength=str.length(); int lastWan=str.lastIndexOf("万"); if(lastWan!=-1){ lastWan=strLength-lastWan; str=str.replace("万", ""); strLength=str.length(); str=str.substring(0,strLength-lastWan+1)+"万"+str.substring(strLength-lastWan+1, strLength); //重新获取剪短后的字符串数组的长度 strLength=str.length(); lastWan=str.lastIndexOf("亿"); if(lastWan!=-1){ lastWan=strLength-lastWan; str=str.replace("亿", ""); strLength=str.length(); str=str.substring(0, strLength-lastWan+1)+"亿"+str.substring(strLength-lastWan+1, strLength); } } boolean flag=true; strLength=str.length(); int temp=0; for(int i=strLength;i>0;i--){ if(i%2==1){ if(str.substring(i-1,i).equals("零")){ temp+=2; }else{ flag=false; break; } } } if(temp!=0){ if(!flag){ //字符串分割 str=str.substring(0, strLength-temp+1); if(temp>8&&temp<16){ str+="万"; }else if(temp>16){ str+="亿"; } str+="圆整"; } } return str; } / * 获取大单位 * @param index * @return */ public static String getBigUnit(int index){ String str=""; switch(index){ case 0: str="拾"; break; case 1: str="佰"; break; case 2: str="仟"; break; case 3: str="万"; break; case 4: str="亿"; break; case -1: str=""; break; } return str; } / * 将数值型的数据转换成人民币大写数值 * @param money * @return */ public static String conversionToCnMoney(Integer money){ String moneyString=String.valueOf(money); int moneyLength=moneyString.length(); String str=""; for(int i=0;i<moneyLength;i++){ char s=moneyString.charAt(i); str+=conversionCharToCnMoney(s,moneyLength-i-1); } //字符串截取 str=subStringUnit(str); return str; } / * 将数值型的数据转换成人民币大写数值 * @return */ public static String conversionToCnMoney(Double money,String unit){ long unitNumber=getUnitNumber(unit); long moneyLong=(long)(money*unitNumber); String moneyString=String.valueOf(moneyLong); int moneyLength=moneyString.length(); String str=""; for(int i=0;i<moneyLength;i++){ char s=moneyString.charAt(i); str+=conversionCharToCnMoney(s,moneyLength-i-1); } //字符串截取 str=subStringUnit(str); return str; } / * 获取单位数值 * @param unit * @return */ public static long getUnitNumber(String unit){ long unitNumber=0L; switch(unit){ case "s": unitNumber=10L; break; case "b": unitNumber=100L; break; case "q": unitNumber=1000L; break; case "w": unitNumber=10000L; break; case "sw": unitNumber=L; break; case "bw": unitNumber=L; break; case "qw": unitNumber=L; break; case "y": unitNumber=L; break; case "sy": unitNumber=L; break; case "by": unitNumber=L; break; case "qy": unitNumber=0L; break; case "wy": unitNumber=00L; break; } return unitNumber; } public static void main(String[] args) { int money=; String str=conversionToCnMoney(money); System.out.println(str); money=12; str=conversionToCnMoney(money); System.out.println(str); Double money2=3.14; String unit="by"; str=conversionToCnMoney(money2,unit); System.out.println(str); } }

运行的结果:

壹拾贰万圆整 壹拾贰 叁佰壹拾肆亿圆整 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/148138.html

(0)
上一篇 2025-04-02 15:45
下一篇 2025-04-02 16:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信