您的位置:首页 > 编程语言 > Java开发

使用 JAVA 将数字金额转换成大写中文金额

2011-12-07 23:28 1026 查看
这个小工具类可以帮您把数字的金额转换成大写的中文金额,也可以转换成个性化的数字;

import java.text.DecimalFormat;

public class NumToString {

public static String init(String input){
StringBuffer str=new StringBuffer();
try {

//将数字格式化

double tempnum = Double.parseDouble(input);
DecimalFormat df=new DecimalFormat("##.##");
input = df.format(tempnum);
} catch (NumberFormatException e) {
System.out.println("请输入正确的值!");
return null;
}
//存放中文字符
String [] numStr1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

// String [] numStr2={"零","一","二","三","四","五","六","七","八","九"};

//按点分割
String []nums = input.split("\\.");
//获取整数部分
String num=nums[0];
//获取小数部分
String num2 = "";
if(nums.length>1){
num2=nums[1];
}

//为整数部分转换值
for(int i = 0 ; i<num.length();i++){
boolean ws = true;
str.append(numStr1[(num.charAt(i))-48]);
if(numStr1[(num.charAt(i))-48]=="零"){
ws=false;
}
//增加单位名
int w = num.length()-i - 1;
if(w%4==1&&ws){
str.append("拾");
}else if(w%4==2&&ws){
str.append("佰");
}else if(w%4==3&&ws){
str.append("仟");
}else if(w%4==0&&w/4==1){
str.append("万");
}else if(w%4==0&&w/4==2){
str.append("亿");
}else if(w%4==0&&w/4==3){
str.append("兆");
}

}
//除掉重复的0
while(str.indexOf("零零")!=-1){
str.replace(str.indexOf("零零"), str.indexOf("零零")+2,"零");
}
//除掉末尾的0
while(str.indexOf("零亿")!=-1){
str.replace(str.indexOf("零亿"),str.indexOf("零亿")+2, "亿");
}
while(str.indexOf("零万")!=-1){
str.replace(str.indexOf("零万"),str.indexOf("零万")+2, "万");
}
while(str.indexOf("零兆")!=-1){
str.replace(str.indexOf("零兆"),str.indexOf("零兆")+2, "兆");
}
//除掉最后的零
while(str.charAt(str.length()-1)=='零'){
if(str.charAt(str.length()-1)=='零'){
str.deleteCharAt(str.length()-1);
}
}
//当万位全为0时
if(str.indexOf("亿万")!=-1){
str.replace(str.indexOf("亿万"), str.indexOf("亿万")+2,"亿");
}

str.append("元");
//如果为整数时则加整 ,如有小数部分则解析小数部分
if(!"00".equals(num2)&&num2 != ""){
int n=Integer.parseInt(num2.substring(0, 2));
int len = num2.length()>2?2:num2.length();
for(int k=0;k<len;k++){
if(k == 0&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("角");
}else if(k==1&&numStr1[(num2.charAt(k))-48]!="零"){
str.append(numStr1[(num2.charAt(k))-48]);
str.append("分");
}
}
}else{
str.append("整");
}

return str.toString();
}

public static void main(String[] args) {
String numStr = init("60101230300.995");
System.out.println(numStr);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息