金额格式化分为“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"));
}
}