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+"万元");
}
}
分享到:
相关推荐
总的来说,C#提供了丰富的工具来处理数值,包括科学计数法的转换。通过使用`Decimal.Parse()`和适当的`NumberStyles`,我们可以轻松地将科学计数法的字符串转换为常规的数字形式。这个功能在处理从不同数据源获取的...
6. **科学计数法转换**:将大数值或小数值转换为科学计数法,便于理解和处理。 7. **数值安全操作**:对于可能产生溢出或下溢的运算,提供安全的处理方式,如限制结果的范围或返回错误信息。 8. **浮点数的数学...
一些常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹等
1. **调整单元格格式**:选中显示为科学计数法的单元格,右键点击选择“格式单元格”或者使用快捷键`Ctrl + 1`打开“格式单元格”对话框。在“数字”选项卡中,选择“数值”类别,然后在“小数位数”栏内设定所需的...
3. 非货币性资产交换:新准则可能测试考生对非货币性资产交换会计处理的理解,包括是否涉及商业实质,以及如何计量交换价值。 二、多选题知识点 多选题往往考察考生对新准则的综合理解和应用。这可能包括: 1. ...
1. **实时预览**:在编辑过程中即时显示格式化效果,便于调整数据格式。 2. **拖放操作**:可以通过拖放JSON文件到应用图标上,直接打开并格式化。 3. **自定义设置**:允许用户自定义缩进样式(空格或制表符)、...
本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。
java ping ip ping命令 ping工具类 支持linux和windows等所有平台 Ping是Windows下的一个命令 在Unix和Linux下也有这个命令。 ping也属于一个通信协议,是TCP/IP协议的一部分 利用“ping”命令可以检查网络是否连通...
6. `Scientific`:科学计数法表示。 7. `Yes/No`:0 显示 "NO",非 0 显示 "YES"。 8. `True/False`:0 显示 "False",非 0 显示 "True"。 9. `On/Off`:0 显示 "Off",非 0 显示 "On"。 自定义格式化参数允许更...
这是bos开发使用的工具类,大概一千多行代码,包括获取当前组织,用户,自定义编码规则等等等等实用的方法,这是一朋友给我的,我在做金蝶开发的时候,帮了我很多很多!感兴趣的可以下来看看,每个方法都有注释
然而,CSV文件是纯文本格式,直接用Excel打开时,可能会出现数据失真问题,如乱码或数字过长导致的科学计数法显示。为了解决这些问题,本工具提供了将CSV文件拆分和转换为Excel文件的功能。 1. CSV文件拆分:将一个...
Java二维码工具类是一种用于生成和解析二维码的编程资源,它扩展了二维码的使用,使其能够包含自定义图像,如LOGO。在这个特定的案例中,我们有一个强大的工具类,能够将LOGO集成到二维码的中心,增加了二维码的视觉...
1. **货币与非货币项目法下的折算**:非货币性项目的折算通常使用历史汇率,因为它们的价值不直接与汇率变动相关(参考答案B)。货币性项目则通常按现行汇率折算。 2. **吸收合并**:这是一种合并方式,其中一家...
对于已经完成的电子表格数据,如果存在错误的显示格式,可以采用批量选择包含问题数据的单元格,然后应用上述任一格式设置方法,即可批量更正,使数据恢复原状。 综上所述,虽然Excel的数据处理功能强大,但正确...
此外,尽管这类工具对于紧急情况非常有用,但预防总是优于治疗。定期维护和检查存储设备,使用可靠的数据恢复软件,以及保持良好的备份习惯,可以大大减少遇到此类问题的几率。在进行手机系统升级时,确保设备和存储...
本文将详细介绍Java、Android和Web三端通用的RSA和AES工具类的使用,以及相关的JavaScript实现。RSA是一种非对称加密算法,而AES则是一种对称加密算法,它们在保护敏感信息方面发挥着关键作用。 首先,RSA(Rivest-...
在开发过程中,除了EditPlus,还有其他很多工具可以用来格式化JSON数据,比如在线的JSON校验和格式化工具(如JSONLint)、IDE内置的格式化功能(如Visual Studio Code、IntelliJ IDEA等),以及命令行工具(如jq)。...
**C代码格式化工具:AStyle_3.0.1_windows** 在编程世界里,代码规范是提升代码可读性和团队协作效率的关键因素。AStyle(Artistic Style)是一款强大的开源代码格式化工具,专为C/C++语言设计,同时也支持其他编程...
内存卡低级格式化工具是一种专门用于对内存卡进行深层清理和修复的软件,它可以清除内存卡上的所有数据,包括文件系统、分区信息以及可能存在的坏道,为内存卡提供一个全新的、原始的存储空间。这个工具对于解决内存...
还重点讲解sar、vmstat、valgrind和strace等工具的输出,以及如何将它们运用到应用程序中;如何利用各种编程API来开发适用于自己的工具。 最后,作者介绍了可以提高软件性能的工具;解释了如今市面上的多芯CPU的内在...