货币单位类RmbUnit
import java.math.BigDecimal;
public enum RmbUnit {
FEN{
public String toFen(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C1.divide(C1)).stripTrailingZeros().toPlainString();
}
public String toJiao(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C2.divide(C1)).stripTrailingZeros().toPlainString();
}
public String toYuan(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C3.divide(C1)).stripTrailingZeros().toPlainString();
}
},
JIAO{
public String toFen(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C1.divide(C2)).stripTrailingZeros().toPlainString();
}
public String toJiao(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C2.divide(C2)).stripTrailingZeros().toPlainString();
}
public String toYuan(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C3.divide(C2)).stripTrailingZeros().toPlainString();
}
},
YUAN{
public String toFen(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C1.divide(C3)).stripTrailingZeros().toPlainString();
}
public String toJiao(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C2.divide(C3)).stripTrailingZeros().toPlainString();
}
public String toYuan(String amt) {
BigDecimal bigD=new BigDecimal(amt).stripTrailingZeros();
return bigD.divide(C3.divide(C3)).stripTrailingZeros().toPlainString();
}
};
static final BigDecimal C1=new BigDecimal(1);
static final BigDecimal C2=C1.multiply(new BigDecimal(10));
static final BigDecimal C3=C2.multiply(new BigDecimal(10));
public String toFen(String amt) {
throw new AbstractMethodError();
}
public String toJiao(String amt) {
throw new AbstractMethodError();
}
public String toYuan(String amt) {
throw new AbstractMethodError();
}
}
测工具类不适用于System.out.println(RmbUnit.FEN.toFen("0.0")); 这个会放回0.0,其他我测过都ok的。
public static void main(String[] args) {
System.out.println(RmbUnit.FEN.toFen(new String("0")));
System.out.println(RmbUnit.FEN.toJiao(new String("0")));
System.out.println(RmbUnit.FEN.toYuan(new String("0")));
System.out.println(RmbUnit.FEN.toFen(new String("0")));
System.out.println(RmbUnit.FEN.toJiao(new String("0")));
System.out.println(RmbUnit.FEN.toYuan(new String("0")));
System.out.println(RmbUnit.JIAO.toFen(new String("0")));
System.out.println(RmbUnit.JIAO.toJiao(new String("0")));
System.out.println(RmbUnit.JIAO.toYuan(new String("0")));
System.out.println(RmbUnit.JIAO.toFen(new String("0")));
System.out.println(RmbUnit.JIAO.toJiao(new String("0")));
System.out.println(RmbUnit.JIAO.toYuan(new String("0")));
System.out.println(RmbUnit.YUAN.toFen(new String("0")));
System.out.println(RmbUnit.YUAN.toJiao(new String("0")));
System.out.println(RmbUnit.YUAN.toYuan(new String("0")));
System.out.println(RmbUnit.YUAN.toFen(new String("0")));
System.out.println(RmbUnit.YUAN.toJiao(new String("0")));
System.out.println(RmbUnit.YUAN.toYuan(new String("0")));
System.out.println(RmbUnit.FEN.toFen(new String("100")));
System.out.println(RmbUnit.FEN.toJiao(new String("100")));
System.out.println(RmbUnit.FEN.toYuan(new String("100")));
System.out.println(RmbUnit.FEN.toFen(new String("1")));
System.out.println(RmbUnit.FEN.toJiao(new String("1")));
System.out.println(RmbUnit.FEN.toYuan(new String("1")));
System.out.println(RmbUnit.JIAO.toFen(new String("100")));
System.out.println(RmbUnit.JIAO.toJiao(new String("100")));
System.out.println(RmbUnit.JIAO.toYuan(new String("100")));
System.out.println(RmbUnit.JIAO.toFen(new String("1")));
System.out.println(RmbUnit.JIAO.toJiao(new String("1")));
System.out.println(RmbUnit.JIAO.toYuan(new String("1")));
System.out.println(RmbUnit.JIAO.toFen(new String("10")));
System.out.println(RmbUnit.JIAO.toJiao(new String("10")));
System.out.println(RmbUnit.JIAO.toYuan(new String("10")));
System.out.println(RmbUnit.YUAN.toFen(new String("100")));
System.out.println(RmbUnit.YUAN.toJiao(new String("100")));
System.out.println(RmbUnit.YUAN.toYuan(new String("100")));
System.out.println(RmbUnit.YUAN.toFen(new String("1")));
System.out.println(RmbUnit.YUAN.toJiao(new String("1")));
System.out.println(RmbUnit.YUAN.toYuan(new String("1")));
System.out.println(RmbUnit.YUAN.toFen(new String("10")));
System.out.println(RmbUnit.YUAN.toJiao(new String("10")));
System.out.println(RmbUnit.YUAN.toYuan(new String("10")));
System.out.println(RmbUnit.FEN.toString());
System.out.println(RmbUnit.JIAO.toString());
System.out.println(RmbUnit.YUAN.toString());
System.out.println(RmbUnit.FEN.toJiao("10.0"));
System.out.println(RmbUnit.FEN.toFen("0.0")); //此处会返回0.0
System.out.println(RmbUnit.FEN.toJiao("haha"));//此处会报错
System.exit(0);
}
测试结果:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
100
10
1
1
0.1
0.01
1000
100
10
10
1
0.1
100
10
1
10000
1000
100
100
10
1
1000
100
10
FEN
JIAO
YUAN
1
0.0
Exception in thread "main" java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:459)
at java.math.BigDecimal.<init>(BigDecimal.java:728)
at a.jery.RmbUnit$1.toJiao(RmbUnit.java:13)
at Test.main(Test.java:68)
货币单位类RmbUnit的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
随机推荐
- 配置Entity Framework连接Sql Server出现的一个异常
异常:The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFrame ...
- 个推推送iOS版 常见问题详解
原文:http://www.oschina.net/question/1782938_234760 1.提交了.p12文件后多久可以测试? 提交后10分钟左右才可以测试,并不是立即生效的. 2 ...
- enmo_day_07
数据备份 物理备份 : 底层数据块 逻辑备份 :exp(export), imp(import) 导入导出工具,提取成dump文件,再将dump文件放入数据库 expdp, impdp 数据蹦 uti ...
- Android 每次访问网络时,都需要判断是否有网络
/** * 在执行网络操作之前判断网络是否链接可用 * * @return true 可用 false 不可用 */ private boolean isOnline() { Connectivity ...
- ubuntu13.04 nfs配置
开发板和主机之间共享文件,常常需要配置nfs服务: 服务器端安装:root#:apt-get install nfs-common root#:apt-get install nfs-kernel-s ...
- 在你决定从事iOS开发前需要清楚的几个问题
作者:David McGraw 翻译:丁丁(jackiehoo) 原文:http://www.xmcgraw.com/what-you-need-to-know-to-start-learning- ...
- 《Java中的自动装箱和拆箱功能.》
//Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...
- (spring-第17回【AOP基础篇】) 创建增强类
一. 增强类包含的信息: a) 横切逻辑(插入的具体代码) b) 部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二. 增强的类型 每一种增强有一个需要实现的增强类 ...
- javaweb--上传文件使用灵活的自定义添加
//upload2.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- Javascript DOM基础(二) childNodes、children
childNodes知识点: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Typ ...