`
txin0814
  • 浏览: 218281 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java 格式化金额与数字转换

    博客分类:
  • java
阅读更多
记录下一些常用的函数,以便下次使用
/**
	 * 格式化金额		
	 * @param s
	 * @param len
	 * @return
	 */
	public static String formatMoney(String s, int len) 
	{
		if (s == null || s.length() < 1) {
			return "";
		}
		NumberFormat formater = null;
		double num = Double.parseDouble(s);
		if (len == 0) {
			formater = new DecimalFormat("###,###");

		} else {
			StringBuffer buff = new StringBuffer();
			buff.append("###,###.");
			for (int i = 0; i < len; i++) {
				buff.append("#");
			}
			formater = new DecimalFormat(buff.toString());
		}
		String result = formater.format(num);
		if(result.indexOf(".") == -1)
		{
			result = "¥" + result + ".00";
		}
		else
		{
			result = "¥" + result;
		}
		return result;
	}

调用该方法
formatMoney("-87094753316.74", 2)

输出格式分:
¥-87,094,753,316.74


将阿拉伯数字转换成对应的大写,不是很完善:
 public static String getUpperChineseMoney(String amount) {
        
    	if (null==amount||"".equals(amount)||amount.indexOf("-")!=-1)
    		return "";
    	
    	
    	if (amount == null||Double.parseDouble(amount)==0) {
            return "零元整";
        }
        
        boolean islt0 = false;
        if(Double.parseDouble(amount) < 0.001){
        	islt0=true;
        	amount = (-Double.parseDouble(amount))+"";
        }

        final String[] upperUnit = {
                                   "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万",
                                   "仟", "佰", "拾", "元"};
        final String[] upperNumber = {
                                     "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
                                     "捌", "玖"};
        final String[] upperDec = {
                                  "角", "分"}; 
        StringBuffer convertedMoney = new StringBuffer("");
        String returnString = "";

        try {
        	System.out.println(amount+"----------------------");
            DecimalFormat dcf = new DecimalFormat("###########0.00");
            String numString = dcf.format(Double.parseDouble(amount));
            System.out.println(numString+"----------------------");
            numString=numString.replaceAll(",",".");
            System.out.println(numString+"----------------------");
            int dotPos = numString.indexOf(".");
            String integerStr = numString.substring(0, dotPos);
            String decStr = numString.substring(dotPos + 1);
            int lenInt = integerStr.length();
            int lenDec = 0;
            if ("00".equalsIgnoreCase(decStr)) {
                lenDec = 0;
            } else {
                lenDec = 2;
            }

            if (lenInt > 13) {
                return "数字太大";
            }

            boolean zeroFlg = false;
            int lenEmpty = 13 - lenInt;
            for (int i = 0; i < lenInt; i++) {
                String number = integerStr.substring(i, i + 1);
                String unit = upperUnit[lenEmpty + i];
                String upNum = upperNumber[Integer.parseInt(number)];
                if ("0".equalsIgnoreCase(number)) {
                    if (!zeroFlg) {
                        zeroFlg = true;
                    }
                    if ("亿".equals(unit) || "万".equals(unit) || "元".equals(unit)) {
                        convertedMoney.append(unit);
                    }
                } else {
                    if (zeroFlg) {
                        convertedMoney.append("零").append(upNum).append(unit);
                        zeroFlg = false;
                    } else {
                        convertedMoney.append(upNum).append(unit);
                    }
                }
            }
            if (lenDec == 0) {
                convertedMoney.append("整");
            } else {
                String jiao = upperNumber[Integer.parseInt(decStr.substring(0,
                        1))];
                if (!"0".equals(decStr.substring(0, 1))) {
                    convertedMoney.append(jiao).append(upperDec[0]);
                } else {
                    convertedMoney.append(jiao);
                }

                String fen = upperNumber[Integer.parseInt(decStr.substring(1, 2))];
                if (!"0".equals(decStr.substring(1, 2))) {
                    convertedMoney.append(fen).append(upperDec[1]);
                } else {
                    convertedMoney.append("整");
                }
            }

            returnString = convertedMoney.toString();
            if (judgeUnit(returnString)) {
                returnString = returnString.replaceFirst("亿万", "亿");
            }

        } catch (Exception ex) {
        	ex.printStackTrace();
            return "输入格式不正确!";
        }
        if(islt0){
        	returnString="负"+returnString;
        }
        return returnString;
    }		


调用该方法
getUpperChineseMoney("54545454");

输出格式分:
伍仟肆佰伍拾肆万伍仟肆佰伍拾肆元整

分享到:
评论
3 楼 cmyx2008love 2012-08-08  
1005.23的结果是?

100.23

100.00

12300.01


judgeUnit  这个方法没贴
2 楼 txin0814 2012-08-08  
cmyx2008love 写道
BUG

恩 说说
1 楼 cmyx2008love 2012-08-07  
BUG

相关推荐

    java 正则数字金额转换为大写

    输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...

    Java经典编程源码基础例程300.zip

    实例008 使用Eclipse格式化代码 11 实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例063 String类格式化当前日期 80 实例064 字符串大小写转换 82 实例065 字符与Unicode码的转换 83 4.2 辨别字符串 84 实例066 判断用户名是否正确 84 实例067 用户名排序 85 实例068 判断网页请求与FTP请求 86 ...

    java面试宝典

    219、如何格式化日期 53 220、文件和目录(I/O)操作 54 230、J2EE的优越性 54 231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55...

    JAVA工具类

    JsonUtils - json格式转换 lang CharsetDetectorUtils - 获取文本文件编码格式 ChineseCalendar - 农历日历 ConvertUtils - 高低字节转换 DateUtils - 日期工具类 HtmlFilterUtils - 过滤html标签 JsoupUtils - ...

    千方百计笔试题大全

    219、如何格式化日期 53 220、文件和目录(I/O)操作 54 230、J2EE的优越性 54 231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55...

    jsp编程技巧集锦

    格式化输出数字和字符? 111.生成一定范围的随机数? 112.调用其它应用程序? 113.禁止列出站点文件目录? 114.防止用户直接输入文件名访问JSP? 115.防止表单重复提交? 116.使页面全屏显示? 117.在...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    易语言程序免安装版下载

    数据库操作支持库增加读写长整数字段的功能,但受限于系统接口暂不能读写超出整数范围的数值。 7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。 8. 修改BUG:在IDE中打开源代码文件(.e)后...

Global site tag (gtag.js) - Google Analytics