zoukankan      html  css  js  c++  java
  • 金额转中国大写

    /*
         * 将小写的人民币转化成大写
         */
        public static String convertToChineseNumber(double number) {
            StringBuffer chineseNumber = new StringBuffer();
            String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
            String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟",
                    "亿", "拾", "佰", "仟", "万" };
            String tempNumber = String.valueOf(Math.round((number * 100)));
            int tempNumberLength = tempNumber.length();
            if ("0".equals(tempNumber)) {
                return "零圆整";
            }
            if (tempNumberLength > 15) {
                System.out.println("超出转化范围.");
            }
            boolean preReadZero = true; // 前面的字符是否读零
            for (int i = tempNumberLength; i > 0; i--) {
                if ((tempNumberLength - i + 2) % 4 == 0) {
                    // 如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位
                    if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) {
                        if (!preReadZero) {
                            chineseNumber.insert(0, "零");
                            preReadZero = true;
                        }
                        i -= 3; // 下面还有一个i--
                        continue;
                    }
                    // 如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志)
                    preReadZero = true;
                }
                int digit = Integer.parseInt(tempNumber.substring(i - 1, i));
                if (digit == 0) {
                    // 如果当前位是零并且标志为未读零,则读零,并设置标志为已读零
                    if (!preReadZero) {
                        chineseNumber.insert(0, "零");
                        preReadZero = true;
                    }
                    // 如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万)
                    if ((tempNumberLength - i + 2) % 4 == 0) {
                        chineseNumber.insert(0, unit[tempNumberLength - i]);
                    }
                } else {
                    // 如果当前位不为零,则读出此位,并且设置标志为未读零
                    chineseNumber
                            .insert(0, num[digit] + unit[tempNumberLength - i]);
                    preReadZero = false;
                }
            }
            // 如果分角两位上的值都为零,则添加一个“整”字
            if (tempNumberLength - 2 >= 0
                    && "00".equals(tempNumber.substring(tempNumberLength - 2,
                            tempNumberLength))) {
                chineseNumber.append("整");
            }
            return chineseNumber.toString();
        }
  • 相关阅读:
    [恢]hdu 1412
    [恢]hdu 2212
    [恢]hdu 1407
    [恢]hdu 1228
    [恢]hdu 1337
    [恢]hdu 1014
    [恢]hdu 2200
    定居到博客园了!
    比较GridView,DataList,Repeator ,DetailsView,FormView
    随手记录修改某条记录时,不使用数据库控件而用datareader
  • 原文地址:https://www.cnblogs.com/clovem/p/8005399.html
Copyright © 2011-2022 走看看