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的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  9. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

随机推荐

  1. 优化ubuntu桌面

    ---恢复内容开始--- 此博主写的很全 http://blog.csdn.net/terence1212/article/details/52270210 使用安装Unity Tweak Tool ...

  2. UISlider

    UISlider是iOS中的滑块控件 通常⽤于控制视频播放进度,控制⾳量等. 它继承于UIControl,滑块提供了⼀系列连续的值,滑块停 在不同的位置,获取到滑块上的值也不同.   minimumV ...

  3. Linux下SVN命令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  4. Rhel6-pacemaker+drbd配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.12 ...

  5. CentOS6.4安装Hadoop2.0.5 alpha - 3-Node Cluster

    1.在第2个个节点上重复http://www.cnblogs.com/littlesuccess/p/3361497.html文章中的第1-5步 2.修改第1个节点上的hdfs-site.xml中的配 ...

  6. Jmeter—6 CSV Data Set Config 通过文件导入数据

    线程组循环次数大于1的时候,请求里每次提交的数据都相同.有的系统限制了不能提交相同数据,我们通过 CSV Data Set Config 加载csv文件数据. 1 创建一个文本文件,输入参数值保存为. ...

  7. 安装生物信息学软件-R

    主要参考http://www.3fwork.com/b211/000091MYM021616/ Step 1 : sudo gedit /etc/apt/sources.list 添加到末尾 deb ...

  8. Python学习路程day13

    JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. ...

  9. js中的offsetWidth岁的BUG

    ---恢复内容开始--- 在js使用offsetWidth来操作控件的运动是会遇到: var oDiv = document.getElementById('div1') oDiv.style.wid ...

  10. json全套

    JS文件 function pager1_InitData() { //基础配置 $("#pager1").myPagination({ currPage: 1, pageCoun ...