将小写的金额转换成中文的大写金额

/**
 * 作者:陈伟兵
 * MSN: cwbnig@hotmail.com
 * Q Q:  56235312
 * 信箱:chenweibing1982@163.com
 */
import java.lang.Math;

/**
 * 将小写的金额转换成中文的大写金额
 * 如“5460”转换成“伍千肆百陆十零”
 * 本程序暂时对单位只支持到亿
 */
public class DateToChinese
{
 public static void main(String[] args)
 {
  //要转换的小写的金额数字
  int number = 5460;
  //用于最终输出内容的字符串
  String output = "";
  
  //大写的中文数字
  String[] chineseNumber = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };
  //数字的中文单位(十,百,千,万,十万,百万,千万,亿,十亿,百亿,千亿,万亿)
  String[] chineseUnit = {"十","百","千","万","十","百","千","亿","十","百","千","万"};

  //基数
  int a = 1;
  //在每个中文单位上的数字
  int b;
  //中文单位的数组的索引
  int temp;
  
  //找到最大的基数,举例:number=5460,那么最大基数是1000
  for (int i = 1; i < number; i *= 10)
  {
   a = i;
  }

  //只要基数大于1,就反复执行循环,直到基数小于1为止
  while (a >= 1)
  {
   //从整个数字左边起,求第一个单位上的数字,举例:number=5460,那么b=5
   b = number/a;
   //求出当前基数对应的中文单位,举例:a=1000,那么b=3
   temp=(int)Math.log10((double)(a));
   number = number%a;
   a = a/10;
   //如果中文单位索引大于0,则取出中文单位
   if(temp>0)
   {
    output = output + chineseNumber[b]+chineseUnit[temp-1];
   }
   else
   {
    output = output + chineseNumber[b];
   }
  }
  //输出转换后的中文的大写金额
  System.out.println(output);
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值