`

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金额数字转中文工具类的核心思想是将数字按照中文的计数单位进行分割,并将各个部分转换为对应的汉字。例如,数字12345.67会被分割为12345和0.67两部分,其中12345会被转换为“一万二千三百四十五”,0.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网络调用打印机工具类知识点详解 #### 一、概述 在开发过程中,有时我们需要实现一种功能,即用户下单后能自动打印出订单金额发票和快递单号。本工具类实现了这一需求,通过Java调用网络打印机来完成打印...

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

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

    人民币大小写转换

    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