将输入的浮点数转换成RMB

来源:互联网 发布:学竖琴知乎 编辑:程序博客网 时间:2024/04/28 23:09

前两天老师留的作业,布置下来的时候就想了一下,觉得很简单,就没下手做,今天有空着手做才知道在读成RMB的时候要注意的不少
看来真的是眼高手低啊,要改!!
 public  void ChangeDisplay(float n) {
  //调用这个数组对数字进行转换
  ArrayList<String> arrInteger = new ArrayList<String>();
  arrInteger.add("零");
  arrInteger.add("壹");
  arrInteger.add("贰");
  arrInteger.add("叁");
  arrInteger.add("肆");
  arrInteger.add("伍");
  arrInteger.add("陆");
  arrInteger.add("柒");
  arrInteger.add("捌");
  arrInteger.add("玖");
  //这个数组用来确定整数数位
  ArrayList<String> arrBit = new ArrayList<String>();
  arrBit.add("元");
  arrBit.add("拾");
  arrBit.add("百");
  arrBit.add("千");
  arrBit.add("万");
  arrBit.add("拾");
  arrBit.add("百");
  arrBit.add("千");
  arrBit.add("亿");
  arrBit.add("拾");
  arrBit.add("百");
  //这个数组用来确定小数数位
  ArrayList<String> arrDecimal = new ArrayList<String>();
  arrDecimal.add("角");
  arrDecimal.add("分整");
  
  String strDigit = "";
  float z = n % 1;//获取小数部分
  int part_Decimal = (int) (z / 0.01);
  long temp;
  long digit = (long) n;//获取整数部分,转换成长整型
  int k;//记录各个位数上数字的大小
  int m = 1;
  int i = 0;
  while (digit != 0) {
   k = (int) (digit % (m * 10));
   temp = digit / (m * 10);
   digit = temp;
   strDigit = arrInteger.get(k) + arrBit.get(i++) + strDigit;
  }

  int t;
  i=0;
  while (part_Decimal != 0) {
   k = part_Decimal % (m * 10);
   System.out.println(k);
   t = part_Decimal / (m * 10);
   part_Decimal = t;
   strDigit =  strDigit+arrInteger.get(k) + arrDecimal.get(i++) ;
  }
  strDigit = strDigit.replaceAll("零千", "零");
  strDigit = strDigit.replaceAll("零百", "零");
  strDigit = strDigit.replaceAll("零拾", "零");
  strDigit = strDigit.replaceAll("零万", "万");
  strDigit = strDigit.replaceAll("零千|零百|零拾", "零");
  strDigit = strDigit.replaceAll("零零零|零零", "零");
  strDigit = strDigit.replaceAll("零亿", "亿");
  strDigit = strDigit.replaceAll("零万", "万");
  strDigit = strDigit.replaceAll("零元", "元");
  System.out.println(strDigit);
 }

一会去网上查下看看别人怎么做的,大家有好的方法分享一下吧

原创粉丝点击