`

货币显示工具类:会计格式,非科学计数法等

UP 
阅读更多

package chanson;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @title 货币显示处理工具类
 * @detail 包含以下内容:
 * 1、四舍五入求值
 * 2、针对不同的格式化要求:万,百万,亿等
 * 3、会计格式的货币值:添加','符号
 * 4、非科学计数法的货币值
 * @author chanson
 * @time 2008-12-9
 * @version 1.0
 */
public class MoneyUtil {
	
	/**
	 * @title 获取格式化的人民币(四舍五入)
	 * @author chanson
	 * @param money  待处理的人民币
	 * @param scale  小数点后保留的位数
	 * @param divisor 格式化值(万,百万,亿等等)
	 * @return
	 */
	public String getFormatMoney(double money, int scale, double divisor){
		if(divisor == 0){return "0.00";}
		if(scale < 0){return "0.00";}
		BigDecimal moneyBD = new BigDecimal(money);
		BigDecimal divisorBD = new BigDecimal(divisor);
		//RoundingMode.HALF_UP = 2
		return moneyBD.divide(divisorBD, scale, RoundingMode.HALF_UP).toString();
	}
	
	/**
	 * @title 获取会计格式的人民币(四舍五入)——添加会计标识:','
	 * @author chanson
	 * @param money  待处理的人民币
	 * @param scale  小数点后保留的位数
	 * @param divisor 格式化值(万,百万,亿等等)
	 * @return
	 */
	public String getAccountantMoney(double money, int scale, double divisor){
		String disposeMoneyStr = getFormatMoney(money, scale, divisor);
		//小数点处理
		int dotPosition = disposeMoneyStr.indexOf(".");
		String exceptDotMoeny = null;//小数点之前的字符串
		String dotMeony = null;//小数点之后的字符串
		if(dotPosition > 0){
			exceptDotMoeny = disposeMoneyStr.substring(0,dotPosition);
			dotMeony = disposeMoneyStr.substring(dotPosition);
		}else{
			exceptDotMoeny = disposeMoneyStr;
		}
		//负数处理
		int negativePosition = exceptDotMoeny.indexOf("-");
		if(negativePosition == 0){
			exceptDotMoeny = exceptDotMoeny.substring(1);
		}
		StringBuffer reverseExceptDotMoney = new StringBuffer(exceptDotMoeny);
		reverseExceptDotMoney.reverse();//字符串倒转
//		reverse(reverseExceptDotMoeny);
		char[] moneyChar = reverseExceptDotMoney.toString().toCharArray();
		StringBuffer returnMeony = new StringBuffer();//返回值
		for(int i = 0; i < moneyChar.length; i++){
			if(i != 0 && i % 3 == 0){
				returnMeony.append(",");//每隔3位加','
			}
			returnMeony.append(moneyChar[i]);
		}
		returnMeony.reverse();//字符串倒转
//		reverse(returnMeony);
		if(dotPosition > 0){
			returnMeony.append(dotMeony);
		}
		if(negativePosition == 0){
			return "-" + returnMeony.toString();
		}else{
			return returnMeony.toString();
		}
	}
	
	/**
	 * @title 字符串倒转方法
	 * @detail 字符串倒转方法
	 * @author chanson
	 * @param oldStr
	 */
//	 public void reverse(StringBuffer oldStr){
//		  char[] oldStrChar = oldStr.toString().toCharArray();
//		  StringBuffer newStr = new StringBuffer();
//		  for(int i = oldStrChar.length - 1; i > -1; i--){
//			  newStr.append(oldStrChar[i]);
//		  }
//		  oldStr = newStr;
//	  }
	
	public static void main(String[] args) {
		double money = -1269486459.86;
		int scale = 2;
		double divisor = 10000.00;
		System.out.println("原货币值: "+money);
		MoneyUtil util = new MoneyUtil();
//		System.out.println("货币值: "+util.getAccountantMoney(money, scale, 1));
		String formatMeony = util.getFormatMoney(money, scale, divisor);
		System.out.println("格式化货币值: "+formatMeony+"万元");
		String accountantMoney = util.getAccountantMoney(money, scale, divisor);
		System.out.println("会计货币值: "+accountantMoney+"万元");
	}
}

 

1
0
分享到:
评论

相关推荐

    C#实现把科学计数法(E)转化为正常数字值

    总的来说,C#提供了丰富的工具来处理数值,包括科学计数法的转换。通过使用`Decimal.Parse()`和适当的`NumberStyles`,我们可以轻松地将科学计数法的字符串转换为常规的数字形式。这个功能在处理从不同数据源获取的...

    六年级数学下册科学计数法沪教五四制PPT学习教案.pptx

    总的来说,科学计数法是解决大数问题的有效工具,它简化了数字的表达,提高了计算的效率。在六年级数学的学习中,理解和掌握科学计数法对后续的数学学习和实际应用具有重要意义。通过这样的PPT学习教案,学生不仅能...

    VLOOKUP函数处理科学记数法数据的全面指南

    在处理大量数据时,尤其是涉及大数字或微小数值时,Excel 常常自动将这些数字以科学记数法的形式显示。科学记数法虽然在显示上简洁,但在数据查找和引用时可能会带来一些挑战。幸运的是,VLOOKUP 函数能够处理这些以...

    JS工具类

    6. **科学计数法转换**:将大数值或小数值转换为科学计数法,便于理解和处理。 7. **数值安全操作**:对于可能产生溢出或下溢的运算,提供安全的处理方式,如限制结果的范围或返回错误信息。 8. **浮点数的数学...

    常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹

    一些常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹等

    导出Excel报表

    1. **调整单元格格式**:选中显示为科学计数法的单元格,右键点击选择“格式单元格”或者使用快捷键`Ctrl + 1`打开“格式单元格”对话框。在“数字”选项卡中,选择“数值”类别,然后在“小数位数”栏内设定所需的...

    2022年会计继续教育新企业会计准则考试题目及答案定稿.pdf

    3. 非货币性资产交换:新准则可能测试考生对非货币性资产交换会计处理的理解,包括是否涉及商业实质,以及如何计量交换价值。 二、多选题知识点 多选题往往考察考生对新准则的综合理解和应用。这可能包括: 1. ...

    Mac版json格式化工具

    1. **实时预览**:在编辑过程中即时显示格式化效果,便于调整数据格式。 2. **拖放操作**:可以通过拖放JSON文件到应用图标上,直接打开并格式化。 3. **自定义设置**:允许用户自定义缩进样式(空格或制表符)、...

    小额贷款公司会计科目表.doc

    此外,小额贷款公司会计科目表还可以帮助小额贷款公司更好地满足相关的法律和法规要求,例如《中华人民共和国会计法》、《中华人民共和国证券法》等。小额贷款公司会计科目表可以帮助小额贷款公司更好地遵守相关法律...

    Xml和Json互转工具类

    本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。

    美国会计准则-中文版参考.pdf

    包括收入确认、存货核算、所得税会计、资产折旧、长期资产减值、已减值资产的处置、应收帐款坏帐准备、养老金核算、租赁会计核算、海外经营和货币折算、衍生工具和套期活动、缺勤补偿、或有损失和产品担保、合并和...

    GJB299C-2006 元器件计数法可靠性预计工具(支持国产+进口器件)

    内置《GJB299C-2006电子设备可靠性预计手册》1.6W+元器件的失效率数据,涵盖了标准中全部国产和进口元器件,可以大幅度减少手工查询手册数据的工作量,提升工作效率,程式工具主要功能特性: ※全面支持国产、进口...

    高并发订单号生成工具类

    高并发订单号生成工具类,TWITTER编码方式可BAIDU

    java二维码工具类,中间带LOGO的,很强大

    Java二维码工具类是一种用于生成和解析二维码的编程资源,它扩展了二维码的使用,使其能够包含自定义图像,如LOGO。在这个特定的案例中,我们有一个强大的工具类,能够将LOGO集成到二维码的中心,增加了二维码的视觉...

    ToString格式大全

    `DateTime.ToString()`方法提供了丰富的格式化选项,允许开发者自定义日期时间的显示格式。例如: - `"D"`:长日期格式,如`Thursday, June 16, 2006` - `"d"`:短日期格式 - `"f"`:完整日期和时间 - 更多特殊格式...

    json 解析器 json 显示工具

    5. **导出为其他格式**:例如,将JSON数据转换为CSV或Excel等格式,方便进一步分析。 6. **实时预览**:对数据的改动能即时反映在树状视图中。 在使用JSON显示工具时,需要注意以下几点: - 确保输入的JSON数据是...

    json格式检测工具

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它的设计目标是人可读性高且易于编写,同时也方便机器解析和生成。JSON格式基于JavaScript的一个子集...

    手机内存卡格式化工具

    手机内存卡格式化工具是一种专门针对手机内存卡设计的应用程序,旨在解决无法正常格式化内存卡的问题。在日常使用手机时,我们可能会遇到内存卡出现各种问题,如数据错误、病毒感染、无法读取等,这些问题可能导致...

    一个通用的Java线程池类

    环境:Windows XP ...这里本人翻写一个通用的线程池类,它可以用来作为工具类处理许多多线程问题。代码注释非常详尽,一行注释一行代码。 阅读对象:非常熟悉Java的基本概念,并且熟悉命令行编写代码的人员。

Global site tag (gtag.js) - Google Analytics