zoukankan      html  css  js  c++  java
  • 将数字转换为大写人民币值

    public static String convertRMB(double value) {
    if (value == 0) {
    return "零元";
    }
    char[] hunit = {'拾', '佰', '仟'}; //段内位置表示
    char[] vunit = {'万', '亿'}; //段名表示
    char[] digit = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'}; //数字表示
    long midVal = (long) (((value+0.000001) * 1000) / 10); //转化成整形
    String valStr = String.valueOf(midVal); //转化成字符串
    //确保字符串长度大于等于2
    if (valStr.length() == 1) {
    valStr = "0" + valStr;
    }
    String head = valStr.substring(0, valStr.length() - 2);//取整数部分
    String rail = valStr.substring(valStr.length() - 2);//取小数部分
    String prefix = ""; //整数部分转化的结果
    String suffix = ""; //小数部分转化的结果
    //处理小数点后面的数
    if (rail.equals("00")) { //如果小数部分为0
    suffix = "整";
    } else {
    suffix = digit[rail.charAt(0) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分";//否则把角分转化出来
    }
    //处理小数点前面的数
    char[] chDig = head.toCharArray(); //把整数部分转化成字符数组
    char zero = '0'; //标志'0'表示出现过0
    byte zeroSerNum = 0; //连续出现0的次数
    for (int i = 0; i < chDig.length; i++) {//循环处理每个数字
    int idx = (chDig.length - i - 1) % 4;//取段内位置
    int vidx = (chDig.length - i - 1) / 4;//取段位置
    if (chDig[i] == '0') {//如果当前字符是0
    zeroSerNum++; //连续0次数递增
    if (idx == 0 && vidx > 0 && zeroSerNum < 4) {//标志
    prefix += vunit[vidx - 1];
    zero = '0';
    } else if (zero == '0') {
    zero = digit[0];
    }
    continue;
    }
    zeroSerNum = 0;//连续0次数清零
    if (zero != '0') {//如果标志不为0,则加上,例如万,亿什么的
    prefix += zero;
    zero = '0';
    }
    prefix += digit[chDig[i] - '0'];//转化该数字表示
    if (idx > 0) prefix += hunit[idx - 1];
    if (idx == 0 && vidx > 0) {
    prefix += vunit[vidx - 1];//段结束位置应该加上段名如万,亿
    }
    }
    if (prefix.length() > 0)
    prefix += '元';//如果整数部分存在,则有元的字样
    return prefix + suffix;//返回正确表示
    }

    //测试


    @Test
    public void test(){
    System.out.println(convertRMB(25));//输出 贰拾伍元整
    }

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/yy123/p/4011077.html
Copyright © 2011-2022 走看看