2021-05-21从命令行参数输入一浮点数值,将其转化为中文金额的大写方式,如123.45,转化为:壹佰贰拾叁元肆角伍分,中间有多个0只要一个零。

本文档展示了如何使用Java编程将数字金额精确地转换为包含中文大写和货币单位的字符串,如'壹佰元零叁拾贰元捌角玖分'。涉及整数和小数部分的处理,以及相应的字符串格式化技巧。
package 实验三;

public class Exp_7 {

	static  String bigLetter[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};   
    // 货币单位   
  static  String unit[] = {"元", "拾", "佰", "仟", "万",    
                // 拾万位到仟万位   
                "拾", "佰", "仟",   
                // 亿位到万亿位   
                "亿", "拾", "佰", "仟"};      
  public static void main (String args[]) {
	    String tmp=args[0];
	    System.out.println(tmp);
	    String result []=tmp.split("\\.");  //划分为整数部分和小数部分
	    int len =result.length;
	     String s=solve(result[0]);
	     String s1="";
	     if (len>1)
	   	 s1=fun(result[1]);
	     System.out.println(new StringBuffer(s).reverse()+s1);//记得把小数点左边部分转化结果逆置一下
  }
  public static String  solve(String s) //处理整数部分
  { 
	   long x=Long.valueOf(s); //将字字符串s转化为长整型
	   int ans=-1,flag=1;//ans记录钱的位数
	   String a = "";
	   if(x==0)
		   return " ";
	    while (x>0)
	    {
	      ans++;
	      long m=x%10;
	          x=x/10;
	      if (m==0&&flag==1) {
	    	  a+=bigLetter[(int) m];
	    	  flag=0;
	      }
          if (m>0){

	    	  flag=1;
	    	  a+=unit[ans];
	    	  a+=bigLetter[(int) m];
	      }
	      if(ans==4) a+="万";
	      if(ans==8) a+="亿";
	     }
	     return a;
  }
  public static String fun (String s) {    //处理小数部分
	   int x=Integer.valueOf(s);
	   if(x==0)
		   return "";
	   if(x<10&&s.length()==1)
		   return bigLetter[x]+"角";
	   int m=x%10;
	   x=x/10;
	  if (x!=0&&m==0)
	  {
		  return bigLetter[x]+"角";
	  }
	  else if(x==0)
	  {
		  return bigLetter[m]+"分";
	  }
	  else return bigLetter[x]+"角"+bigLetter[m]+"分";
  }


}

输出结果示例:

1003206.89
壹佰万零叁仟贰佰零陆元捌角玖分

10001003206.89
壹佰亿零壹佰万零叁仟贰佰零陆元捌角玖分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值