`

java金额元与分转换工具类

阅读更多
java金额元与分转换的一个工具类。
1.元转分:
可传入字符串或者long型(隐式转换为long型也可)整数。
若传入为字符串,则通过替换小数点的方式转换,小数点有多位或者没有小数点皆已考虑。
若传入为long 则通过BigDecimal来乘100
2.分转元:
可传入字符串或者long型(隐式转换为long型也可)整数。并对传入的分进行粗略的格式判断



详见代码:


Java代码 
package com.util; 
 
import java.math.BigDecimal; 
 
 
/**
* com.util.AmountUtils
* @description  金额元分之间转换工具类
* @author zcm0708@sina.com
* @2012-2-7下午12:58:00
*/ 
public class AmountUtils { 
     
    /**金额为分的格式 */ 
    public static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+"; 
     
    /** 
     * 将分为单位的转换为元并返回金额格式的字符串 (除100)
     * 
     * @param amount
     * @return
     * @throws Exception 
     */ 
    public static String changeF2Y(Long amount) throws Exception{ 
        if(!amount.toString().matches(CURRENCY_FEN_REGEX)) { 
            throw new Exception("金额格式有误"); 
        } 
         
        int flag = 0; 
        String amString = amount.toString(); 
        if(amString.charAt(0)=='-'){ 
            flag = 1; 
            amString = amString.substring(1); 
        } 
        StringBuffer result = new StringBuffer(); 
        if(amString.length()==1){ 
            result.append("0.0").append(amString); 
        }else if(amString.length() == 2){ 
            result.append("0.").append(amString); 
        }else{ 
            String intString = amString.substring(0,amString.length()-2); 
            for(int i=1; i<=intString.length();i++){ 
                if( (i-1)%3 == 0 && i !=1){ 
                    result.append(","); 
                } 
                result.append(intString.substring(intString.length()-i,intString.length()-i+1)); 
            } 
            result.reverse().append(".").append(amString.substring(amString.length()-2)); 
        } 
        if(flag == 1){ 
            return "-"+result.toString(); 
        }else{ 
            return result.toString(); 
        } 
    } 
     
    /**
     * 将分为单位的转换为元 (除100)
     * 
     * @param amount
     * @return
     * @throws Exception 
     */ 
    public static String changeF2Y(String amount) throws Exception{ 
        if(!amount.matches(CURRENCY_FEN_REGEX)) { 
            throw new Exception("金额格式有误"); 
        } 
        return BigDecimal.valueOf(Long.valueOf(amount)).divide(new BigDecimal(100)).toString(); 
    } 
     
    /** 
     * 将元为单位的转换为分 (乘100)
     * 
     * @param amount
     * @return
     */ 
    public static String changeY2F(Long amount){ 
        return BigDecimal.valueOf(amount).multiply(new BigDecimal(100)).toString(); 
    } 
     
    /** 
     * 将元为单位的转换为分 替换小数点,支持以逗号区分的金额
     * 
     * @param amount
     * @return
     */ 
    public static String changeY2F(String amount){ 
        String currency =  amount.replaceAll("\\$|\\¥|\\,", "");  //处理包含, ¥ 或者$的金额 
        int index = currency.indexOf("."); 
        int length = currency.length(); 
        Long amLong = 0l; 
        if(index == -1){ 
            amLong = Long.valueOf(currency+"00"); 
        }else if(length - index >= 3){ 
            amLong = Long.valueOf((currency.substring(0, index+3)).replace(".", "")); 
        }else if(length - index == 2){ 
            amLong = Long.valueOf((currency.substring(0, index+2)).replace(".", "")+0); 
        }else{ 
            amLong = Long.valueOf((currency.substring(0, index+1)).replace(".", "")+"00"); 
        } 
        return amLong.toString(); 
    } 
     
    public static void main(String[] args) { 
        try { 
            System.out.println("结果:"+changeF2Y("-000a00")); 
        } catch(Exception e){ 
            System.out.println("----------->>>"+e.getMessage()); 
//          return e.getErrorCode(); 
        }  
//      System.out.println("结果:"+changeY2F("1.00000000001E10")); 
         
        System.out.println(AmountUtils.changeY2F("1000000000000000")); 
        System.out.println(Long.parseLong(AmountUtils.changeY2F("1000000000000000"))); 
        System.out.println(Integer.parseInt(AmountUtils.changeY2F("10000000"))); 
        System.out.println(Integer.MIN_VALUE); 
        long a = 0; 
        System.out.println(a); 
         
    } 
分享到:
评论

相关推荐

    java 金额转大写工具类

    可以把金额数值转为财务上常用的金额大写,如100元 转为壹佰园

    java金额数字转中文工具类详解

    java金额数字转中文工具类详解 Java 金额数字转中文工具类是将阿拉伯数字转换为汉字表示的工具类,具有实用的参考价值。本工具类主要用于将金额数字转换为中文表示,例如将12345.67转换为「一万二千三百四十五元六...

    java代码将金额数字转为中文工具类

    java代码将金额数字转为中文工具类。 java金额转换工具类。

    Java数字金额转大写

    将数字金额转换为大写汉字的java工具类,方便财务相关开发转换金额。

    java实现数字转换人民币中文大写工具

    Java 实现数字转换人民币中文大写工具 Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换...

    java编写的简单的单位换算工具

    在这个单位换算工具中,每个不同的单位(如米和公里)可能被表示为一个类,每个类包含与该单位相关的转换方法。 2. **面向对象设计** 在这个工具的设计中,可能会有一个基类“单位”(Unit),它定义了转换的基本...

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

    这段代码首先将输入的`double`类型金额转换为字符串,并保留两位小数。接着,它将整数部分和小数部分分开,对整数部分添加逗号分隔符。然后,根据金额正负判断是否添加负号。最后,根据需要填充前导零。 为了测试这...

    java后台微信支付工具类

    Java后台微信支付工具类是开发微信App支付时不可或缺的一部分,它包含了处理支付请求、响应以及与微信支付服务器交互的关键逻辑。微信支付是一个安全且广泛使用的支付方式,它允许用户通过微信应用程序进行线上交易...

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\026 数字金额大写转换\ConvertNumberToUpper.java D:\002 我的工具类\027 Java6实现调用操作平台桌面系统 D:\002 我的工具类\027 Java6实现调用操作平台桌面系统\DesktopDemo.java

    java写的金额转换器,双击可直接运行

    本项目是一个基于Java开发的金额转换工具,它能够帮助用户将数字转化为中文大写金额,这对于财务报告或者会计操作非常有用。下面我们将详细讨论这个程序的工作原理、实现方式以及使用步骤。 首先,我们要理解的是...

    java金额转换,阿拉伯数字转换成中国传统形式。

    在Java编程中,将阿拉伯数字转换为中国传统形式的金额表示是一项常见的需求,特别是在财务系统或者银行应用中。这种转换能够使数字更符合中国人的阅读习惯,增加可读性。在这个问题中,我们要处理的是将像...

    金额转大写java工具

    将小写金额转换为大写金额

    使用java将人民币金额转换成大写并使用自定义标签显示到页面

    本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`ChangeNumMoney.java`这个文件,它可能包含了实现金额转换的核心逻辑。 `...

    基于Java语言的简化人民币金额大写转换工具设计源码

    该工具是基于Java语言的简化人民币金额大写转换设计源码,适用于Android平台开发。...它是一款易于使用的软件,旨在帮助用户轻松将小写金额转换为标准的大写金额,有效解决日常转账和报销中金额大写的书写难题。

    JAVA网络调用打印机工具类

    ### JAVA网络调用打印机工具类知识点详解 #### 一、概述 在开发过程中,有时我们需要实现一种功能,即用户下单后能自动打印出订单金额发票和快递单号。本工具类实现了这一需求,通过Java调用网络打印机来完成打印...

    人民币大小写转换

    Java中关于金额小写转换为大写的工具类

    金额汉字数字转换工具

    通过以上分析,我们可以看出,"金额汉字数字转换工具"是一个结合了数字逻辑、汉字文化、编程技巧和财务管理规则的实用工具。对于从事财务软件开发或需要处理中文数字转换的IT从业者来说,理解和掌握这一功能的实现至...

    java钱币小写转换大写

    在Java编程中,将钱币小写金额...通过以上步骤,我们已经实现了一个简单的Java工具类来将小写金额转换为大写。在实际开发中,还可以根据需求进行优化,比如添加缓存机制来提高性能,或者扩展支持其他货币种类的转换。

    Java钱币大小写转换

    在财务、会计以及金融领域,将数字金额转换为中文大写形式是一项常见的需求。这不仅适用于正式文档如发票、合同等,也常见于银行转账、支付确认等场景中。Java作为一种广泛使用的编程语言,提供了一系列工具和方法来...

    java写的把数字转化成英语的工具

    有些变态的报表需要把数字转换成英文输出,但愿这个能帮得到你 one hundred eighty-eight thousand, eight hundred one hundred eighty-eight thousand, eight hundred one one hundred eighty-eight thousand, ...

Global site tag (gtag.js) - Google Analytics