`
txin0814
  • 浏览: 219819 次
  • 性别: 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人民币金额数字转换成大写

    Java 人民币金额数字转换成大写 Java 人民币金额数字转换成大写是 Java 面试中最常见的问题之一。本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中...

    java数字转金额(任意金额、支持负数、前缀0)

    在Java编程中,将数字转换为金额格式是一项常见的任务,特别是在财务系统或者电子商务应用中。这个过程涉及到将数字转换成符合人类阅读习惯的货币格式,包括添加逗号分隔符,处理负数,以及在必要时添加前导零。本文...

    把金额数字格式化大写的形式

    在IT行业中,尤其是在财务软件开发或者...总的来说,将金额数字格式化为大写形式在Java中可以通过创建映射表和处理逻辑来实现。以上代码只是一个基础示例,实际应用中可能需要进行更多的优化和扩展以适应各种业务场景。

    java字符串类型数字设置千分位分隔

    它是`java.text`包下的一个类,主要用于格式化十进制数字。它提供了丰富的功能,如设置数字的精度、添加千分位分隔符等。创建一个`DecimalFormat`实例后,我们可以使用`format()`方法将数字转换为字符串。 下面是一...

    java传入金额(数字)转化成大写

    根据给定的文件信息,我们将探讨如何在Java中实现将输入的金额数字转换为大写的中文表示形式。这种转换在财务、银行系统等场景中非常常见,有助于提高数据的可读性和规范性。 ### Java传入金额(数字)转换成大写的...

    JSTL fmt_formatNumber 数字、货币格式化

    ### JSTL `fmt:formatNumber` 数字与货币格式化 #### 一、概述 在Java Server Pages (JSP) 开发过程中,对数字进行格式化是非常常见的需求之一。例如,将数值按照特定的货币格式展示,或者将数字转换为百分比形式...

    Struts2 格式化日期、时间和数字

    例如,你可以使用Java的`SimpleDateFormat`或`DecimalFormat`类对日期和数字进行处理,然后将格式化后的值返回到`ValueStack`。 在实际应用中,你可能需要处理用户输入的日期和数字。这时,你可以使用Struts2的拦截...

    金额转换程序java

    在Java中,这通常涉及到数字的格式化,以及创建一个映射表,将阿拉伯数字对应到中文大写数字。例如,数字"1"对应"壹","2"对应"贰",以此类推,直到"9"对应"玖",零对应"零"。除了个位数,还有十位、百位、千位等的...

    银行金额转换

    在Java中实现银行金额转换主要涉及到字符串操作、数字格式化以及对特定字符(如小数点、负号)的处理。给定的代码示例展示了如何将一个数字字符串转换成具有中文读法的货币金额表述。 #### 重要数据结构与变量定义 ...

    将阿拉伯数字转换为金额的汉字大写

    总的来说,将阿拉伯数字转换为金额的汉字大写是Java在财务领域中的一项基础应用,它体现了编程语言处理日常业务问题的能力。通过理解并实现这样的功能,开发者不仅可以加深对Java编程的理解,也能更好地服务于财务...

    将用罗马数字表示的金额转化为中文大写表示

    总的来说,这个任务涉及到了字符串解析、数字转换、格式化和语言文化特性等多个编程领域的知识点,对Java程序员来说是一次很好的练习。在实际开发中,这样的功能可能被封装在一个独立的库或者框架中,以供其他项目...

    数字转金额的源代码(java)

    2. **金额格式化**:根据中文习惯,金额需要分为元、角、分三部分,并且每部分的大写数字都有特定的汉字对应,例如"零"、"壹"、"贰"等。这需要创建一个映射表,将阿拉伯数字映射到相应的汉字。 3. **转换逻辑**:...

    jstl标签实现货币的格式化

    `&lt;fmt:formatNumber&gt;`标签用于格式化数字,可以将数字转换为货币、百分比或普通数字格式。其基本语法如下: ```xml 变量名" value="数值" type="格式类型" currencySymbol="货币符号" maxFractionDigits="最大小数...

    freemarker 数字格式化深入理解

    在Freemarker中,数字格式化是一个重要的功能,它允许开发者将数字以特定的格式展现出来,如货币、百分比、固定小数位数等。本文将深入探讨Freemarker数字格式化的各种方法。 一、使用内建函数`c` Freemarker中的内...

    java钱币小写转换大写

    在Java编程中,将钱币小写金额转换为大写金额是一项常见的需求,特别是在财务系统或者电商平台上,为了符合规范和避免误解,金额通常会以大写形式展示。本知识点主要探讨如何利用Java实现这一功能。 首先,我们需要...

    java写的货币转换

    1. **数字格式化**:在Java中,我们可以使用`NumberFormat`类来格式化数字,比如添加逗号分隔符或者按照特定的货币格式显示。但是,这个类并不直接支持将数字转换为大写汉字,我们需要自定义解决方案。 2. **字符...

    人民币数字转化为文字代码

    - 首先,去除小数点,并将数字转换为不带小数点的字符串。 - 然后,通过`StringBuffer`对象插入相应的汉字大写数字和单位,形成初步的大写金额字符串。 - 最后,通过正则表达式移除不必要的字符,如多余的量级...

    Android中数字转中文,金额转大写

    在Android开发中,有时我们需要将数字转换为中文或者将金额以大写的格式显示,这在财务应用或一些需要中文表示数字的场景中尤其常见。本文将深入探讨如何在Android环境中实现这一功能,包括数字转中文以及数字金额转...

Global site tag (gtag.js) - Google Analytics