前两天老师留的作业,布置下来的时候就想了一下,觉得很简单,就没下手做,今天有空着手做才知道在读成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);
}
一会去网上查下看看别人怎么做的,大家有好的方法分享一下吧