人民币 大写转换

public class NumberData {
    /**-人民币 大写转换
     *
     * @param num ----要转化的数字
     * @return
     */
    public static String makeUpperCaseSum(String numStr) {

    String isNeg = "";//正或者负
    double num = Double.parseDouble(numStr);
        if (num < 0) {
            num *= -1;
            isNeg = "负";
            numStr = numStr.substring(1);
        }
        final String[] upper_number = { "零","壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
        final String[] number_dw = { "", "拾", "佰", "仟", "万", "拾", "佰",
                "仟", "亿", "拾", "佰", "仟", "万" };
        String operate = numStr;
        String upper_str = "";
        String upper_str_pre = "";
        String upper_str_later = "";
        String vsDx;
        int i, j, point_pos, int_len;
        if (num < 0.01) {
            return "零圆整";
        }

        upper_str_pre = "";

        point_pos = operate.indexOf(".");
        if (point_pos == -1)
            int_len = operate.length();
         else
            int_len = point_pos;
        if (int_len > number_dw.length)
            return "too long !!!";
        if (num > 0) {
            for (i = 0; i < operate.length(); i++) {
                j = int_len - i;
                if(j>0){//整数部分
                    int k = Integer.parseInt(operate.substring(i, i + 1));
                    if(k==0){//数字为0时
                    if(j==5||j==9)//单位为亿或者万时
                        upper_str_pre += upper_number[k] + number_dw[j-1];
                        else
                    upper_str_pre +=  upper_number[k];
                    }
                    else
                    upper_str_pre += upper_number[k] + number_dw[j-1];
                }else if(j<0){//小数部分
                    int k = Integer.parseInt(operate.substring(i, i + 1));
                    upper_str_later += upper_number[k];
                    if(j==-1)
                        upper_str_later += "角";
                    else
                        upper_str_later += "分";
                }
            } //end for

        } //end if
    upper_str_pre += "圆";
        while(upper_str_pre.indexOf("零零")!=-1){
        upper_str_pre = upper_str_pre.replaceAll("零零","零");
        }
    upper_str_pre = upper_str_pre.replaceAll("零万","万");
    upper_str_pre = upper_str_pre.replaceAll("零亿","亿");
    upper_str_pre = upper_str_pre.replaceAll("亿万","亿零");
    upper_str_pre = upper_str_pre.replaceAll("零零","零");
    upper_str_pre = upper_str_pre.replaceAll("零圆","圆");
    if("圆".equals(upper_str_pre))
    upper_str_pre = "";
    upper_str = isNeg+upper_str_pre + upper_str_later;
    upper_str = upper_str.replaceAll("零角零分","整");
    if(point_pos == -1)
    upper_str += "整";
        return upper_str;
    }
}
时间: 2024-08-06 23:44:16

人民币 大写转换的相关文章

FastReport调用Delphi中的人民币大写转换自定义函数

FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje: Double): string; const s1: string = '零壹贰叁肆伍陆柒捌玖'; s2: string = '分角元拾佰仟万拾佰仟亿拾佰仟万'; function StrTran(const S, s1, s2: string): string; begin Result := S

一个强大的人民币大写转换的正则表达式

static string ConvertToChinese(double dNum) { string tmps = dNum.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); string str = Regex.Replace(tmps, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|

万亿级人民币大写精准转换

近期因工程需要实现人民币大写转换,本来想这已经是一个古老的话题了,互联网上应当有成熟的答案,但是没想到,下载了十来个范例,没有一个令人满意.有些点击数万次的范例,确糟糕的难以想象.一个看似简单的问题,其实并不简单,因此,不得不花两天时间,对这个小小的问题作了深入的研究,设计了数个算法,最后只保留了一个方法. 实现类cn.jadepool.util.CastRMB,支持亿万元级人民币大写的精准转换.源代码已经打包在jadepool-1-2-GBK.zip资源文件中,可以通过以下链接http://d

Java实现人民币大写精讲

想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到分 经典测试数据: 0 希望转换出来的结果为: 零元零角零分 1234 希望转换出来的结果为: 壹仟贰佰叁拾肆元零角零分 9999 希望转换出来的结果为: 玖仟玖佰玖拾玖元零角零分 1234.5 希望转换出来的结果为: 壹仟贰佰叁拾肆元伍角零分 1234.9 希望转换出来的结果为: 壹仟贰佰叁拾肆元

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

ORACLE数字转换人民币大写

ORACLE数字转换人民币大写     示例.   数字                        :            183066999230.68 人民币大写            :            壹仟捌佰参拾亿零陆仟陆佰玖拾玖万玖仟贰佰参拾圆陆角捌分   数字                        :            999900000000 人民币大写            :            玖仟玖佰玖拾玖亿圆整     Step 1.  Cre

java 将一个正整数翻译成人民币大写的读法

程序如下: 1 import java.lang.StringBuffer; 2 /** 3 给定一个浮点数,将其装换成人民币大写的读法 4 88.5:捌十捌元零伍角 5 */ 6 public class Num2Rmb 7 { 8 private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒",

NET 人民币大写

/***** HongShijin** [email protected]** 2009-3-15 10:13:00.00000** text/C#***/ /// <summary> /// 转换人民币大写 /// </summary> /// <param name="input">数字输入</param>  /// <returns>大写金额</returns> public static string To

JS 人民币大写

/***** HongShijin** [email protected]** 2014-10-15 9:13:00.00000** text/javascript***/ (function ($){ Number.prototype.toRmbString = function () { var c = { n: [38646, 22777, 36144, 21441, 32902, 20237, 38470, 26578, 25420, 29590, 25972, 36000], // "