金额格式化

金额格式化分为“9,999,999.99” 或者 “叁百贰十肆万肆百叁十元叁分贰角”

1、数字格式化代码

	//金额格式化99,999.00
	public static String formatAmt(String s , int len){
		if(s == null || s.length() < 1){
			return null;
		}
		NumberFormat nft = null;
		double num = Double.parseDouble(s);
		if(len == 0){
			nft =  new DecimalFormat("###,###");
		}else{
			StringBuffer buf = new StringBuffer();
			buf.append("###,###.");
			for(int i=0;i<len;i++){
				buf.append("#");
			}
			nft = new DecimalFormat(buf.toString());
		}
		String result = nft.format(num);
		if(result.indexOf(".") == -1){
			return result+".00";
		}else{
			return result;
		}
	}

system.out.pritln(formatAmt("7625732832",2));

2、中文大写格式化代码

package org.util;

import java.text.DecimalFormat;
import java.text.NumberFormat;

import com.sun.org.apache.xerces.internal.impl.xs.SubstitutionGroupHandler;

public class FormatUtil {

	private static String[] ch1 = {"壹","贰","叁","肆","五","陆","柒","捌","玖"};
	private static String[] ch2 = {"十","百", "千","万"};
	private static String[] ch3 = {"元","万","亿"};
	private static String[] ch4 = {"分","角"};
	
	
	
	
	//金额格式化 中文大写
	public static String formatCh(String s){
		if(null == s || "".equals(s)){
			return "";
		}
		if(s==null || Double.parseDouble(s) == 0){
			return "零元整";
		}
		StringBuffer numBuf = new StringBuffer();   //总显示的字符串
		StringBuffer intBuf = new StringBuffer();	//整数部分字符串
		StringBuffer flBuf = new StringBuffer();	//小树部分字符串
		String str = new DecimalFormat("#############.00").format(Double.parseDouble(s));
		System.out.println(Double.parseDouble(s));
		
		String intStr = str.substring(0, str.indexOf("."));
		int intStrlen = intStr.length();
		System.out.println("整数部分:"+intStr);
		
		if(intStr.length()>13){
			return "数字太大无法转换";
		}
		
		if(str.indexOf(".") != -1){
			String floatStr = str.substring(str.indexOf(".")+1);
			int fltStrlen = intStr.length();
			System.out.println("小数部分:"+floatStr);
			for(int i=0;i<floatStr.length();i++){
				int num = Integer.parseInt(floatStr.substring(i,i+1));
				for(int j=0;j<ch1.length;j++){
					if(num==j+1){
						flBuf.append(ch1[j]).append(ch4[floatStr.length()-i-1]);
					}
				}
			}
		}
		
		if(intStr.length()>8 && intStr.length() <= 13){
			intBuf.append(amtRang(3, intStrlen, intStr));
		}
		if(intStr.length()>4 && intStr.length() <= 8){
			intBuf.append(amtRang(2, intStrlen, intStr));
		}
		if(intStr.length()<=4){
			intBuf.append(amtRang(1, intStrlen, intStr));
		}

		numBuf.append(intBuf).append(flBuf);
		return numBuf.toString();
	}
	
	//讲数字转化成汉子并加上单位
	public static String subStrAddDW(String sub){
		StringBuffer buf = new StringBuffer();
		for(int jj=0;jj<sub.length();jj++){
			int num = Integer.parseInt(sub.substring(jj,jj+1));
			for(int j=0;j<ch1.length;j++){
				if(num==j+1){
					int m = sub.indexOf(sub.substring(jj,jj+1));
					if(jj!=sub.length()-1){
						buf.append(ch1[j]).append(ch2[sub.length()-jj-2]);
					}else{
						buf.append(ch1[j]);
					}
				}
			}
		}
		return buf.toString();
	}
	
	//整数部分大小范围
	public static String amtRang(int n,int intStrlen,String str){
		String[] subInt = new String[n];
		StringBuffer buf = new StringBuffer();
		int count = 0;
		for(int i=intStrlen;i>0;i-=4){
			if(i<4){
				String sub = str.substring(0, i);
				subInt[count] = sub;
			}else{
				String sub = str.substring(i-4, i);
				subInt[count] = sub;
			}
			count ++;
		}
		for(int i=subInt.length-1; i>=0;i--){
			buf.append(subStrAddDW(subInt[i])).append(ch3[i]);
		}
		return buf.toString();
	}

	public static void main(String[] args) {
  		System.out.println(FormatUtil.formatCh("888888"));
  		System.out.println(FormatUtil.formatCh("232324554.00"));
 		 System.out.println(FormatUtil.formatCh("83726182.48"));
 	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xq30397022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值