java人民币大小写转换_Java 实现人民币小写转大写[转载http://sunjun.blogchina.com/]
Java实现人民币小写转大写
import java.io.*;
import java.util.*;
import java.lang.*;
public class money
{
public money()
{
}
public static String getChnmoney(String strNum){
int n,m,k,i,j,q,p,r,s=0;
int length,subLength,pstn;
String change,output,subInput,input=strNum;
output="";
if(strNum.equals(""))
return null;
else
{
length=input.length();
pstn=input.indexOf('.'); //小数点的位置
if(pstn==-1)
{
subLength=length;//获得小数点前的数字
subInput=input;
}
else
{
subLength=pstn;
subInput=input.substring(0,subLength);
}
char[] array=new char[4];
char[] array2={'仟','佰','拾'};
char[] array3={'亿','万','元','角','分'};
n=subLength/4;//以千为单位
m=subLength%4;
if(m!=0)
{
for(i=0;i
{
subInput='0'+subInput;//补充首位的零以便处理
}
n=n+1;
}
k=n;
for(i=0;i
{
p=0;
change=subInput.substring(4*i,4*(i+1));
array=change.toCharArray();//转换成数组处理
for(j=0;j<4;j++)
{
output+=formatC(array[j]);//转换成中文
if(j<3)
{
output+=array2[j];//补进单位,当为零是不补(千百十)
}
p++;
}
if(p!=0) output+=array3[3-k];//补进进制(亿万元分角)
//把多余的零去掉
String[] str={"零仟","零佰","零拾"};
for(s=0;s<3;s++)
{
while(true)
{
q=output.indexOf(str[s]);
if(q!=-1)
output=output.substring(0,q)+"零"+output.substring(q+str[s].length());
else
break;
}
}
while(true)
{
q=output.indexOf("零零");
if(q!=-1)
output=output.substring(0,q)+"零"+output.substring(q+2);
else
break;
}
String[] str1={"零亿","零万","零元"};
for(s=0;s<3;s++)
{
while(true)
{
q=output.indexOf(str1[s]);
if(q!=-1)
output=output.substring(0,q)+output.substring(q+1);
else
break;
}
}
k--;
}
if(pstn!=-1)//小数部分处理
{
for(i=1;i
{
if(input.charAt(pstn+i)!='0')
{
output+=formatC(input.charAt(pstn+i));
output+=array3[2+i];
}
else if(i<2)
output+="零";
else
output+="";
}
}
if(output.substring(0,1).equals("零"))
output=output.substring(1);
if(output.substring(output.length()-1,output.length()).equals("零"))
output=output.substring(0,output.length()-1);
return output+="整";
}
}
public static String get3Eng(String strNum){
String strEng= "";
String str[] = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
String str1[] = {"TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
String str2[] = {"TEN","TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY","HUNDRED"};
int length = strNum.length();
int num = Integer.parseInt(strNum);
int b = num/100;
int t = (num%100)/10;
int g = (num%100)%10;
if (b!=0){
strEng = strEng + str[b] + " " + str2[9];
}
if (t==0){
if(g!=0){
if(b!=0){
strEng = strEng + " AND ";
}
strEng = strEng + str[g];
}
}else if (t==1){
if(b!=0){
strEng = strEng + " AND ";
num=num%100;
}
strEng = strEng +str1[num-10];
}else if(t!=1){
if (g!=0){
if(b!=0){
strEng = strEng + " AND ";
}
strEng = strEng + str2[t-1] + "-" + str[g];
}else{
if(b!=0){
strEng = strEng + " AND ";
}
strEng = strEng + str2[t-1] + str[g];
}
}
return strEng;
}
public static String getCent(String strNum){
String strEng= "";
String str[] = {"","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"};
String str1[] = {"TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN"};
String str2[] = {"TEN","TWENTY","THIRTY","FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY","HUNDRED"};
String str3[] = {"CENTS","","DOLLARS","","HUNDRED","THOUSAND","","","MILLION","","","BILLION","",""};
if(strNum.equals(""))
return null;
else
{
int length = strNum.length();
if (length!=3){
return "输入的位数错误!";
}
int cent = Integer.parseInt(strNum.substring(1,3));
if (cent==0){
return strEng;
}
if (cent<10){
strEng =str3[0]+" "+ strEng + str[cent] ;
}else if (cent>=10&¢<=19){
strEng =str3[0]+" "+ strEng + str1[cent-10] ;
}else if (cent>19){
int jiao = cent/10;
int fen = cent%10;
if (fen!=0){
strEng = str3[0]+" "+strEng + str2[jiao-1] + "-" +str[fen];
}else{
strEng = str3[0]+" "+strEng + str2[jiao-1] + str[fen];
}
}
return strEng;
}
}
public static String getEngmoney(String strNum) {
String strNumber="";
String str3[] = {"CENTS","","DOLLARS","","HUNDRED","THOUSAND","","","MILLION","","","BILLION","",""};
String strEng="";
strNumber = strNum;
int pointbz = strNumber.indexOf(".");
if (pointbz < 0){
strNumber = strNumber+".00";
}else if(pointbz > 0){
int k = strNum.length() - pointbz;
if(k==2){
strNumber = strNumber+"0";
}else if(k==1){
strNumber = strNumber+"00";
}
}
int length = strNumber.length();
if (length > 16){
return "您输入的值过大系统无法处理!";
}
String strb ="";
String strm ="";
String strq ="";
String stry ="";
String strf ="";
//得到分
if(length==3){
strf = getCent(strNumber);
strEng = strEng + strf;
}else if(length>3&&length<7){
stry = get3Eng(strNumber.substring(0,length-3));
strf = getCent(strNumber.substring(length-3,length));
strEng = strEng + stry + " " + str3[2];
if (!strf.equals("")){
strEng = strEng + " AND " +strf;
}
}else if(length>6&&length<10){
strq = get3Eng(strNumber.substring(0,length-6));
stry = get3Eng(strNumber.substring(length-6,length-3));
strf = getCent(strNumber.substring(length-3,length));
strEng = strEng + strq + " " + str3[5];
if(stry.equals("")){
strEng = strEng + " " +stry;
}else{
strEng = strEng + " " +stry + " " + str3[2];
}
if(!strf.equals("")){
strEng = strEng + " AND " +strf;
}
}else if(length>9&&length<13){
strm = get3Eng(strNumber.substring(0,length-9));
strq = get3Eng(strNumber.substring(length-9,length-6));
stry = get3Eng(strNumber.substring(length-6,length-3));
strf = getCent(strNumber.substring(length-3,length));
strEng = strEng + strm + " " + str3[8];
if(!strq.equals("")){
strEng = strEng + " " + strq + " " + str3[5];
}
if(!stry.equals("")){
strEng = strEng + " " + stry + " " + str3[2];
}else{
strEng = strEng + " " + str3[2];
}
if(!strf.equals("")){
strEng = strEng + " AND " + strf;
}
}else if(length>12&&length<16){
strb = get3Eng(strNumber.substring(0,length-12));
strm = get3Eng(strNumber.substring(length-12,length-9));
strq = get3Eng(strNumber.substring(length-9,length-6));
stry = get3Eng(strNumber.substring(length-6,length-3));
strf = getCent(strNumber.substring(length-3,length));
strEng = strEng + strb + " " + str3[11];
if(!strm.equals("")){
strEng = strEng + " " + strm + " " + str3[8];
}
if(!strq.equals("")){
strEng = strEng + " " + strq + " " + str3[5];
}
if(!stry.equals("")){
strEng = strEng + " " + stry + " " + str3[2];
}else{
strEng = strEng + " " + str3[2];
}
if(!strf.equals("")){
strEng = strEng + " AND " + strf;
}
}
return strEng+" ONLY";
}
public static String formatC(char x)
{
String a="";
switch(x)
{
case'0': a="零";
break;
case'1': a="壹";
break;
case'2': a="贰";
break;
case'3': a="叁";
break;
case'4': a="肆";
break;
case'5': a="伍";
break;
case'6': a="陆";
break;
case'7': a="柒";
break;
case'8': a="捌";
break;
case'9': a="玖";
break;
}
return a;
}
}
// 基本考虑
// 人民币大写单位银行规定用"元"
// 无零头金额后跟"整",有则不跟
// 角为零时不写角(如:零叁分)
// 四舍五入到分
// 为减少判读疑惑(一般对大写金额预期较高)和
// 体现人民币基本单位为元,金额低于壹圆前仍加"零元"
// 整数转换
// 若干零后若跟非零值,只显示一个零,否则不显示
// 万(亿)前有零后不加零,因亿、万为一完整单位,
// (如:拾万贰仟 比 拾万零贰仟 更顺些)
// 亿为汉语计数最大单位,只要进位到总是显示(如:壹亿亿)
// 万为次最大单位,亿万之间必须有非零值方显示万
// (如"壹亿"不可显示为"壹亿万")
//
// 为减少被窜改的可能性,十进位总发壹音,这和下面的习惯读法不一样
// (十进位处于第一位不发壹音,如"拾元"非"壹拾元",
// 十进位处前有零是否不发壹音不太确定,
// 如"叁仟零壹拾元"还是"叁仟零拾元"?)
// 用"拾万"不用"壹拾万",因为每个整数进位后都有进位单位(拾佰仟万亿)
// 这样即使金额前没有附防窜改的前缀如"人民币"字样也难窜改些
// 因为至少要加添两个汉字并且改动后数字必须进位才能窜改成
// (如"拾万"可改成"叁拾万",而"壹拾万"至少要改成"壹佰壹拾万")
java人民币大小写转换_Java 实现人民币小写转大写[转载http://sunjun.blogchina.com/]相关推荐
- Java实现人民币大小写转换
思路和具体方法都在注释中说明 package ClassicArithmetic;import java.util.Scanner;/** @author:LOHAS翀* @time:2019/11/ ...
- 超强技巧分享,如何将人民币大小写转换?
当我们在制作财务表格的时候,需要将金额的大写跟小写进行转换,如果要一个一个手打出来的话,那就太浪费时间了,一两个数额还好,如果一整个表格的数额,那就不得了了,那要花费多少时间才能将小写金额转换成大写金 ...
- Oracle存储过程实现人民币大小写转换
注意:当报如下错误时,是因为存储过程中定义的变量值太小,加大它的范围即可. Caused by: java.sql.SQLException: ORA-06502: PL/SQL: 数字或值错误 : ...
- JavaScript实现人民币大小写转换
当使用支票或者签署合同时,需要用到大写人民币,常用的中文大写包括零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿.本文介绍下如何使用JavaScript实现将阿拉伯数字的人民币转换成大写. ...
- 人民币大小写转换格式
<?php //****人民币大小写转换格式**** function ChangeToRMB($Val) { $str=array(); $str[0]="零"; $str ...
- JAVAScript实现人民币大小写转换算法
大家好,我是梦辛工作室的灵,最近在写一个人民币大小写转换的工具,就把数字转换为大写中文 界面如下: 这样就很清楚了,做财务软件的时候应该会经常用到: 转换代码如下(是从右向左读): function ...
- c语言人民币大小写转换,人民币大小写转换函数.xls
人民币大小写转换函数.xls Sheet3 Sheet1 IF(A1=0,"",IF(ABS(A1)<0.995,"",TEXT(INT(ROUND(AB ...
- java人民币大小写转换_人民币大小写转换
usingSystem;usingSystem.Text;usingSystem.Text.R using System; using System.Text; using System.Text.R ...
- 人民币大小写转换 java 实现
参考:http://blog.csdn.net/guaishushu1ss/article/details/76757405 对匹配的金额大小,转换规则做了部分修改 工具类: public class ...
最新文章
- 统计决策理论1 统计问题与统计决策
- spark sql 本地调试_干货 | 如何成为大数据Spark高手
- IOS开发如何在iTunes中查看沙河下的路径
- sql limit子句_SQL子句解释的位置:之间,之间,类似和其他示例
- 大数据分析工程师证书_CDA数据分析就业班、大数据就业班就业情况怎么样?
- 英伟达宣布与GSK AI实验室达成合作,研发药物和疫苗
- 使用 AppFuse 快速构建 J2EE 应用
- 称重管理系统使用说明_车辆智能称重管理系统车牌识别
- jhipster使用简明教程
- 【效率工具合集】Win10镜像迅雷快速安装
- Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装GPT磁盘。
- 软件程序开发步骤有哪些?如何简单制作手机App?
- 计算机菜单专业英语,InDesign中英文菜单对照表 -电脑资料
- html和php网站哪个好,HTML和PHP网站设计实例
- 解决操作无法完成,因为其中的文件夹或文件已在另一程序中打开的问题
- 分布式系统架构与分布式事务十问十答,小伙伴们赶快收藏吧
- 【uni-app怎么引用使用阿里巴巴矢量图标库iconfont】
- Ubuntu16.04 安装字体教程
- 和谁在一起,的确很重要
- 由认识到应用——物联网LoRa技术性能分析