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);
}
}
分享到:
相关推荐
可以把金额数值转为财务上常用的金额大写,如100元 转为壹佰园
java金额数字转中文工具类详解 Java 金额数字转中文工具类是将阿拉伯数字转换为汉字表示的工具类,具有实用的参考价值。本工具类主要用于将金额数字转换为中文表示,例如将12345.67转换为「一万二千三百四十五元六...
java代码将金额数字转为中文工具类。 java金额转换工具类。
将数字金额转换为大写汉字的java工具类,方便财务相关开发转换金额。
Java 实现数字转换人民币中文大写工具 Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换...
在这个单位换算工具中,每个不同的单位(如米和公里)可能被表示为一个类,每个类包含与该单位相关的转换方法。 2. **面向对象设计** 在这个工具的设计中,可能会有一个基类“单位”(Unit),它定义了转换的基本...
这段代码首先将输入的`double`类型金额转换为字符串,并保留两位小数。接着,它将整数部分和小数部分分开,对整数部分添加逗号分隔符。然后,根据金额正负判断是否添加负号。最后,根据需要填充前导零。 为了测试这...
Java后台微信支付工具类是开发微信App支付时不可或缺的一部分,它包含了处理支付请求、响应以及与微信支付服务器交互的关键逻辑。微信支付是一个安全且广泛使用的支付方式,它允许用户通过微信应用程序进行线上交易...
D:\002 我的工具类\026 数字金额大写转换\ConvertNumberToUpper.java D:\002 我的工具类\027 Java6实现调用操作平台桌面系统 D:\002 我的工具类\027 Java6实现调用操作平台桌面系统\DesktopDemo.java
本项目是一个基于Java开发的金额转换工具,它能够帮助用户将数字转化为中文大写金额,这对于财务报告或者会计操作非常有用。下面我们将详细讨论这个程序的工作原理、实现方式以及使用步骤。 首先,我们要理解的是...
在Java编程中,将阿拉伯数字转换为中国传统形式的金额表示是一项常见的需求,特别是在财务系统或者银行应用中。这种转换能够使数字更符合中国人的阅读习惯,增加可读性。在这个问题中,我们要处理的是将像...
将小写金额转换为大写金额
本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`ChangeNumMoney.java`这个文件,它可能包含了实现金额转换的核心逻辑。 `...
该工具是基于Java语言的简化人民币金额大写转换设计源码,适用于Android平台开发。...它是一款易于使用的软件,旨在帮助用户轻松将小写金额转换为标准的大写金额,有效解决日常转账和报销中金额大写的书写难题。
### JAVA网络调用打印机工具类知识点详解 #### 一、概述 在开发过程中,有时我们需要实现一种功能,即用户下单后能自动打印出订单金额发票和快递单号。本工具类实现了这一需求,通过Java调用网络打印机来完成打印...
Java中关于金额小写转换为大写的工具类
通过以上分析,我们可以看出,"金额汉字数字转换工具"是一个结合了数字逻辑、汉字文化、编程技巧和财务管理规则的实用工具。对于从事财务软件开发或需要处理中文数字转换的IT从业者来说,理解和掌握这一功能的实现至...
在Java编程中,将钱币小写金额...通过以上步骤,我们已经实现了一个简单的Java工具类来将小写金额转换为大写。在实际开发中,还可以根据需求进行优化,比如添加缓存机制来提高性能,或者扩展支持其他货币种类的转换。
在财务、会计以及金融领域,将数字金额转换为中文大写形式是一项常见的需求。这不仅适用于正式文档如发票、合同等,也常见于银行转账、支付确认等场景中。Java作为一种广泛使用的编程语言,提供了一系列工具和方法来...
有些变态的报表需要把数字转换成英文输出,但愿这个能帮得到你 one hundred eighty-eight thousand, eight hundred one hundred eighty-eight thousand, eight hundred one one hundred eighty-eight thousand, ...