使用javabean把小写金额转换成大写金额
public static void main(String[] args) {moneyConversion mc=new moneyConversion();String money="3412341324234.15166624";//输入的数字必须包含小数点,也可以子设置不包含小数点mc.setMoney(money);System.out.println(money+"转换成大写为:"+mc.getMoney());}
package com.ssm.model;//小写金额转换层大写金额的javaBean
public class moneyConversion {private String money; //转换之前的数字金额private String submoneyCN[]={"","拾","佰","仟"}; //表示数字位数的数组private String numberCNN[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; //大写数字的数组private String je="零壹贰叁肆伍陆柒捌玖"; //大写的数字(0-9)private String cdw="万仟佰拾亿仟佰拾万仟佰拾元角分"; //金额单位public moneyConversion(){} //默认的构造方法public void setMoney(String money){this.money=money;}public String getMoney(){return convert(this.money);}/*** 转换数字金额为大写金额* @return 返回转换后的大写金额*/public String convert(String money){String formatCN=""; //最终的输出值int point=money.indexOf("."); //判断字符串是否包含小数点if(point!=-1){String money1=money.substring(0,point); //小数点之前的部分String money1_1=(new StringBuffer(money1).reverse()).toString();//字符串倒序String money2=money.substring(point+1); //小数点之后的部分if(money2.length()<2){ //如果小数点后的部分少于两位,用"0"补齐if(money2.length()==0){money2="00";}else{money2+="0";}}else{money2=money.substring(point+1,point+3);//如果小数点后的位数大于2位,则只取前2位}int len = money1_1.length(); //字符串反转之后,小数点之前的字符位数int pos=len-1;String sigle="";boolean allhavenum=false;boolean havenum=false;boolean mark=false; //设置一个开关变量,若当前数为"0",将该值设为true;不为"0"时设为false/**以下代码为读出小数点左面的部分*/while(pos>=0){sigle=money1_1.substring(pos,pos+1);//截取1位数字,比如数字1234.56,将左侧的字符串反转,值为4321,则截取的值为1/**读取“亿单元”的代码。* 假设读取10024531042.34。* 小数点左面反转后为:24013542001* pos的初始值为10* mark的初始值为false* havenum的初始值为false* */if(pos>=8 && pos<12){ if(!sigle.equals("0")){ //如果当前值不为"0"if(!mark){ //如果当前值的前一位数不为"0"formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];}else{ //如果当前值不为"0",但该值的前一位数为"0"if(allhavenum){ //如果在当前值之前有不为"0"的数字出现。该条件用来处理用户输入的如:0012.34的数值formatCN+="零";}formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];mark=false;}havenum=true;allhavenum=true; //变量allhavenum表示小数点左面的数中是否有不为"0"的数字;true表示有,false表示无}else{ //如果当前值为"0"mark=true;}if(pos%4==0&&havenum){ //如果当前数字为该单元的最后一位,并且该单元中有不为"0"的数字出现formatCN+="亿";havenum=false;}}/**读取“万单元”的代码*/ if(pos>=4 && pos<8){if(!sigle.equals("0")){if(!mark){formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];}else{if(allhavenum){formatCN+="零";}formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];mark=false;}havenum=true;allhavenum=true;}else{mark=true;}if(pos%4==0&&havenum){ formatCN+="万";havenum=false;}}/**读取“个、十、百、千”的代码*/if(pos>=0 && pos<4){if(!sigle.equals("0")){ if(!mark)formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];else{ if(allhavenum){formatCN+="零";}formatCN+=numberCNN[Integer.parseInt(sigle)]+submoneyCN[pos%4];mark=false; }havenum=true;allhavenum=true;}else{mark=true;}}pos--; }/**碰到小数点时的读法*/ if(allhavenum) //如:00.34就不能读为:元3角4分.变量allhavenum表示小数点左面的内容中是否有数字出现formatCN+="元";else //如果小数点左面的部分都为0如:00.34应读为:零元3角4分formatCN="零元";/**以下代码为读出小数点右面的部分 */ if(money2.equals("00"))formatCN+="整";else{/**读出角,如120.34读为:1佰2拾元零3角4分;123.04读为:1佰2拾3元零4分*/if(money2.startsWith("0")||(allhavenum&&money1.endsWith("0"))){ formatCN+="零";}if(!money2.startsWith("0")){formatCN+=numberCNN[Integer.parseInt(money2.substring(0,1))]+"角";}//读出分,如:12.30读1拾2元3角零分formatCN+=numberCNN[Integer.parseInt(money2.substring(1))]+"分";}}else{formatCN="输入的格式不正确!格式:888.00";}return formatCN;}
}
使用javabean把小写金额转换成大写金额相关推荐
- 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)
写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...
- PB中小写金额转换成大写金额(发票类型)
PB中小写金额转换成大写金额 //================================================================= // 功能:小写金额转换成大写金额 ...
- Java工具包:小写金额转换成大写金额
源代码如下 package com.jian.stringUtil;/*** 工具类:小写金额转换成大写金额* * @author jianxuanbing* */ @SuppressWarnings ...
- 小写金额转换成大写金额的函数
编写一个收费软件时要用到一个小写金额转换成大写金额的函数,我曾在网上找到一个用Powerbuilder写的函数,长达四五十行之巨,后来我自己用DELPHI写了一个函数,寥寥几行代码就搞定: funct ...
- 将小写金额转换成大写金额[存储过程版]
CREATE FUNCTION FAtoC /* 金额阿拉伯数字转换为中文的自定义函数 */ ( @ChangeMoney Money ) RETURNS VarChar(100) AS BEGIN ...
- win7计算机名改成大写,图文解读win7系统excel数字小写金额转换成汉字大写金额的措施...
有很多网友在使用电脑的过程总难免会遇到win7系统excel数字小写金额转换成汉字大写金额的情况.针对win7系统excel数字小写金额转换成汉字大写金额的问题,我给大家整理总结了详细的解决步骤.近日 ...
- 小写数字转大写_不得不说的Excel小技巧:设置单元格格式将小写金额转换成大写...
大家好,我是小秋,近期一段时间比较忙,没有在今日头条上更新原创文章了.希望朋友们多多见谅,下面与大家分享一个Excel实用小技巧:如何设置单元格格式将小写金额转换成大写? 1.应用场景 在报销单.收据 ...
- 阿拉伯数字小写金额转换成中文大写金C额程序说明
阿拉伯数字小写金额转换成中文大写金额C程序说明 1.问题的提出 寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据.银行业务回单.商场销售凭证.专用发票等 ...
- [python]数字金额转换成大写金额
最近开始负责单位的测绘合同草拟和签订,所以打算用python-docx来制作模板,减少自己的工作量.因为合同中有金额的大写内容,所以做了一个转换的函数. 因为行业内几乎签不了上亿的合同,所以函数只能转 ...
最新文章
- 2万人同时访问 nodejs_Nodejs 与 Python 的使用对比
- Netty聊天之发送图片
- python跳出if条件_python的if条件判断
- Android之让图片匀速旋转效果
- LVS学习笔记之三种模式的特点概括
- sqlsever无法重新启动计算机,SQLServer 2008安装提示需要重启计算机,但是重启还是不通过解决方案...
- Oracle iops升高查看,一则简单的磁盘的iops测试
- python asyncio tcp server_关于 asyncio 创建多个 tcp 连接,线程数不准确的问题
- 格拉布斯离群值检验——理论与 Python 实现
- java sharepoint_java调用sharepoint webservice
- Android上的APP图标常见尺寸规范
- 智能人体感应灯,微波雷达存在感应,智能照明技术方案
- buildroot_buildroot-我对多平台发行版创作的经验
- 手把手教你用EZDML批量生成vue-element-admin前端页面代码
- 冒险岛2无限服务器断开,冒险岛2无限龙无限命版
- 解决苹果无线鼠标、键盘或触控板无法被 Mac 识别的方法
- 【技巧】word交叉引用
- 照片透明背景抠图怎么做?试试这几种抠图方法
- shc加密(仅仅对shell脚本加密)
- 电气工程及其自动化专业英语复习