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

这个小工具类可以帮您把数字的金额转换成大写的中文金额,也可以转换成个性化的数字;

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);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值