数字转中文实现

经过测试支持到一亿
 

/**
	 * 数数字转中文 范围1-1亿
	 * @param val
	 * @return java.lang.String
	 * @author Administrator
	 * @updateAuthor: Administrator
	 * @date 2018/9/19 13:06
	 */
	public static String convertNumToUpperNum(String val){
		String[] fuhao={"零","一","二","三","四","五","六","七","八","九"};
		String[] danwei={"","十","百","千","万","十","百","千","亿"};
		String[] vals=val.split("");
		StringBuilder sb=new StringBuilder();
		for (int i = 0; i < val.length(); i++) {
			int num = val.charAt(i) - '0';
			sb.append(fuhao[num]);
		}
		String[] val1=sb.toString().split("");
		int j=0;
		for (int i = val1.length-1; i >0; i--) {
			String t=val1[i];
			boolean rp=false;
			if(t.equals("零")){
				if(i==val1.length-1){
					rp=true;
					val1[i]="";
				}else{
					int rsum=0;
					String t1=vals[i+1];
					rsum+=Integer.valueOf(t1);
					if(Integer.valueOf(t1)>0){
						if(j==4){
							val1[i]="";
						}
						rp=true;
					}

					for (int k = i; k <vals.length ; k++) {
						rsum+=Integer.valueOf(t1);
					}
					if(rsum==0){
						rp=true;
						val1[i]="";
					}
				}
			}
			if(!rp){
				String wan="万";
				if(j==5){
					for (int k = 0; k <val1.length ; k++) {
						if(val1[k].indexOf("万")!=-1){
							wan="";
							break;
						}
					}
				}else if(j==6){
					for (int k = 0; k <val1.length ; k++) {
						if(val1[k].indexOf("万")!=-1){
							wan="";
							break;
						}
					}
				}else if(j==7){
					for (int k = 0; k <val1.length ; k++) {
						if(val1[k].indexOf("万")!=-1){
							wan="";
							break;
						}
					}
				} else{
					wan="";
				}
				if(vals.length>2){
					if(Integer.valueOf(vals[vals.length-j-1])==1 && vals.length-j-1==1 &&
							Integer.valueOf(vals[vals.length-j])==0 && vals.length==2){
						val1[i]="";
					}
					if(j==1 && Integer.valueOf(vals[vals.length-j-1])==1 && vals.length==2){
						val1[i]="";
					}
				}
				val1[i]=val1[i]+danwei[j]+wan;
			}
			j++;
		}
		sb=new StringBuilder();
		for (int i = 0; i < val1.length; i++) {
			sb.append(val1[i]);
		}
		return sb.toString();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值