java 数字金额转大写金额
来源:互联网 发布:高清喷码机软件 编辑:程序博客网 时间:2024/05/16 09:23
/**
* 将金额数字转化成大写字符串
* @param d
* @return
*/
public static String valuesToString(Integer/Double/Long d) {
System.out.println(d);
String returnString ="";
//保存数字大写数组
String[] num = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//十进制单位
String[] unit = {"","拾","佰","仟","万","拾","百","仟","亿","拾","百","仟"};
//拆分int,double,long,等类型的传值
String[] moneys = d.toString().split("\\.");
// System.out.println(moneys[0]);
//将整数部分转化成字节
char[] moneys1 = moneys[0].toCharArray();
//new一个新数组用来保存金额每个数字对应的大写
String[] str = new String[moneys1.length];
//遍历字节数组找到每个数字的大写并保存
for(int i=0;i<moneys1.length;i++){
//保存数字大写
str[i] = num[Integer.parseInt(String.valueOf(moneys1[i]))];
if(!str[i].equals("零")){
if(i!=0&&!str[i-1].equals("零")){
//前一位数字非零又非第一位数字,则在对应的大写数组和单位数字直接去值组合
returnString = returnString+ str[i]+unit[moneys1.length-i-1];
}else if(i!=0&&str[i-1].equals("零")&&(moneys1.length-i!=4&&moneys1.length-i!=8)){
//非第一位数字,但是前一位为零,并且满足不是在千*字倍上的则需要在前加上 "零“
returnString = returnString+"零"+ str[i]+unit[moneys1.length-i-1];
}else if(i!=0&&str[i-1].equals("零")&&(moneys1.length-i==4||moneys1.length-i==8)){
//非第一位数字,但是前一位为零,并且满足是在千*字倍上的则在对应的大写数组和单位数字直接去值组合
if(moneys1.length-i==4&&returnString.endsWith("亿")){
//万位至亿位上全位零的时候,千位前加上"零"
returnString = returnString+"零"+str[i]+unit[moneys1.length-i-1];
}else{
returnString = returnString+str[i]+unit[moneys1.length-i-1];
}
}else if(i==0){
//第一位数字不会出现为0,直接在对应的大写数组和单位数字直接去值组合
returnString = returnString + str[i]+unit[moneys1.length-i-1];
}
}
//在万位或者亿位上加上相应的万或亿单位
if(moneys1.length>4){
if(moneys1.length-i==5){
//万位加单位,如果万至亿之间没有数字则不需要加
if(!returnString.endsWith("亿")){
if(!returnString.endsWith("万")){
//万位上有数字不为零也不需要加
returnString = returnString+"万";
}
}
}else if(moneys1.length-i==9){
//亿位加单位,如果亿位上数字不为零则不需要加
if(!returnString.endsWith("亿")){
returnString = returnString+"亿";
}
}
}
}
//小数点后处理
Long dou = 0l;
if(moneys.length>1&&moneys[1]!=null&&!"".equals(moneys[1])){
dou = Long.valueOf(moneys[1]);
}
if(dou==0){
//小数点后没有数或者为零
returnString = returnString+"元整";
}else{
//小数点后保留的两位数值
returnString = returnString+"元";
Long j = dou/10;
Long f = dou%10;
returnString = returnString + num[j.intValue()]+"角";
returnString = returnString + num[f.intValue()]+"分";
}
return returnString; //To change body of implemented methods use File | Settings | File Templates.
}
运行结果:
* 将金额数字转化成大写字符串
* @param d
* @return
*/
public static String valuesToString(Integer/Double/Long d) {
System.out.println(d);
String returnString ="";
//保存数字大写数组
String[] num = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//十进制单位
String[] unit = {"","拾","佰","仟","万","拾","百","仟","亿","拾","百","仟"};
//拆分int,double,long,等类型的传值
String[] moneys = d.toString().split("\\.");
// System.out.println(moneys[0]);
//将整数部分转化成字节
char[] moneys1 = moneys[0].toCharArray();
//new一个新数组用来保存金额每个数字对应的大写
String[] str = new String[moneys1.length];
//遍历字节数组找到每个数字的大写并保存
for(int i=0;i<moneys1.length;i++){
//保存数字大写
str[i] = num[Integer.parseInt(String.valueOf(moneys1[i]))];
if(!str[i].equals("零")){
if(i!=0&&!str[i-1].equals("零")){
//前一位数字非零又非第一位数字,则在对应的大写数组和单位数字直接去值组合
returnString = returnString+ str[i]+unit[moneys1.length-i-1];
}else if(i!=0&&str[i-1].equals("零")&&(moneys1.length-i!=4&&moneys1.length-i!=8)){
//非第一位数字,但是前一位为零,并且满足不是在千*字倍上的则需要在前加上 "零“
returnString = returnString+"零"+ str[i]+unit[moneys1.length-i-1];
}else if(i!=0&&str[i-1].equals("零")&&(moneys1.length-i==4||moneys1.length-i==8)){
//非第一位数字,但是前一位为零,并且满足是在千*字倍上的则在对应的大写数组和单位数字直接去值组合
if(moneys1.length-i==4&&returnString.endsWith("亿")){
//万位至亿位上全位零的时候,千位前加上"零"
returnString = returnString+"零"+str[i]+unit[moneys1.length-i-1];
}else{
returnString = returnString+str[i]+unit[moneys1.length-i-1];
}
}else if(i==0){
//第一位数字不会出现为0,直接在对应的大写数组和单位数字直接去值组合
returnString = returnString + str[i]+unit[moneys1.length-i-1];
}
}
//在万位或者亿位上加上相应的万或亿单位
if(moneys1.length>4){
if(moneys1.length-i==5){
//万位加单位,如果万至亿之间没有数字则不需要加
if(!returnString.endsWith("亿")){
if(!returnString.endsWith("万")){
//万位上有数字不为零也不需要加
returnString = returnString+"万";
}
}
}else if(moneys1.length-i==9){
//亿位加单位,如果亿位上数字不为零则不需要加
if(!returnString.endsWith("亿")){
returnString = returnString+"亿";
}
}
}
}
//小数点后处理
Long dou = 0l;
if(moneys.length>1&&moneys[1]!=null&&!"".equals(moneys[1])){
dou = Long.valueOf(moneys[1]);
}
if(dou==0){
//小数点后没有数或者为零
returnString = returnString+"元整";
}else{
//小数点后保留的两位数值
returnString = returnString+"元";
Long j = dou/10;
Long f = dou%10;
returnString = returnString + num[j.intValue()]+"角";
returnString = returnString + num[f.intValue()]+"分";
}
return returnString; //To change body of implemented methods use File | Settings | File Templates.
}
运行结果:
0 0
- java 数字金额转大写金额
- 数字金额转大写金额(Java)
- java 金额数字转大写
- 数字金额转大写
- 数字金额转大写
- Java数字金额转换为大写金额
- 金额数字转中文大写(转)(java)
- Java金额数字转中文大写
- 人民币数字金额转大写金额
- PHP数字金额转中文大写金额
- JAVA数字大写金额转换
- JAVA数字大写金额转换
- java-数字金额大写转换
- java 金额转大写
- 数字金额转中文大写金额 - 数字大写转换
- 数字转汉字大写金额
- 数字金额转中文大写
- 金额数字转中文大写
- OU 库存组织和子库存关系
- Path Sum
- 数的划分
- hadoop+zookeeper+hbase分布式环境配置之zookeeper分布式环境搭建
- HDU 2016 数据的交换输出
- java 数字金额转大写金额
- Ant之build.xml详解
- java 过滤器实现
- JAVA 后台拼接分页查询SQL oracle/sqlserver/db2/达梦数据库通用
- 打印linx 中的environ变量
- 转战数学模型
- oracle中从指定日期中获取月份或者部分数据
- 【NOI2014】起床困难综合症
- Android 历史