本帖最后由 xplcc 于 2014-11-2 20:14 编辑
- /**
- * 10、 金额转换,阿拉伯数字转换成中国传统形式。
- 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
- * @author Administrator
- *
- */
- public class Test10 {
- public static void main(String[] args) {
- //方法中的参数为double型
- System.out.println(show(101000001010D));
- }
- /**
- *
- * @param num 整数部分
- * @param decimal 小数部分
- * @return
- */
- public static String converse(long num, int decimal){
-
- //大写数字数组
- String[] upperArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
- //整数部分的单位数组
- String[] unitArr = {"圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"};
-
- //处理整数部分
- //转换成大写后的字符串
- String str = "";
- //记录0的重复次数
- int count = 0;
- //数字的位数 从0开始 例如:0表示个位数 1表示十位数
- int index = 0;
- while(num>0){
- //处理不是零的情况
- if(num%10!=0){
- str = upperArr[(int)(num%10)] + unitArr[index] + str;
- //清零 重新记录0的重复次数
- count = 0;
- //处理是零的情况
- }else{
- //记录0的重复次数
- count++;
- //若个位数为0 则添加单位”圆“
- if(index==0){
- str = unitArr[0];
- }
- //只对第一次是0的情况进行处理 对再次出现的0不作处理 ;并且不对个位数上出现的0做处理
- if(count==1 && index>0){
- str = upperArr[0] + str;
- }
- //当万的4个位数不是0时,添加单位"万"
- if(index==4 && num%10000!=0)str = unitArr[4] + str;
- //当亿的5个位数不是0时,添加单位"亿"
- if(index==8 && num%100000!=0)str = unitArr[8] + str;
- }
- index++;
- //去掉已转换的数字
- num = (long)Math.floor(num/10.0);
-
- }
- //若小数部分为0 直接返回
- if(decimal==0)
- return str + "整";
- //处理小数部分
- String str2 = "";
- str2 = upperArr[(int)(decimal/10%10)] + "角"
- + upperArr[(int)(decimal%10)] + "分";
- return str + str2;
- }
- /**
- * 将double数据拆成整数和小数部分 然后调用大小写转换方法
- * @param d
- * @return
- */
- public static String show(double d){
-
- long num = (long)Math.floor(d);
- int decimal = (int)(d*100-num*100);
- return converse(num,decimal);
- }
- }
复制代码
|
|