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. Objective-C 与 C++ 的异同

    stackflow 上有同学提问"C++ 与 Objective-C 有什么异同?"楼下的提供的两个资料挺不错的. 其一是: Pierre Chatelier 写的 <Fro ...

  2. IT公司100题-26-左旋转字符串

    问题描述: 给定字符串和左旋的字符数,写程序实现字符串的左旋操作.例如对于字符串”12345678″, 左旋转4个字符后,变成”56781234″.要求时间复杂度为O(n),空间复杂度O(1).   ...

  3. echart------属性详细介绍

    theme = { // 全图默认背景 // backgroundColor: 'rgba(0,0,0,0)', // 默认色板 color: ['#ff7f50','#87cefa','#da70d ...

  4. 使用ViewPager实现屏幕滑动效果

    oncreate中设置viewPager viewPager.setPageTransformer(true,new DepthPageTransformer());//设置页面过滤动画效果 page ...

  5. JS 功能弹框封装

    // 功能提示弹框 function messageBox ( option ) { var html = ''; html += '<div class="message-box-h ...

  6. Bitcode设置 编译问题

    今天在一个iOS培训网站上看到一篇关于第三方库不包含bitcode就会报错的文章,感觉剖析得很详细,分享出来,希望可以对iOS初入门者有所帮助.下面我们就一起来看看吧. 用Xcode 7 beta 3 ...

  7. java 读取文件最佳实践

    1.  前言 Java应用中很常见的一个问题,如何读取jar/war包内和所在路径的配置文件,不同的人根据不同的实践总结出了不同的方案,但其他人应用却会因为环境等的差异发现各种问题,本文则从原理上解释 ...

  8. 在mahout安装目录下输入mahout 提示 ERROR: Could not find mahout-examples-*.job

    错误:ERROR: Could not find mahout-examples-*.job in /home/grid/mahout-distribution-0.8 or /home/grid/m ...

  9. What is a watch descriptor

    http://stackoverflow.com/questions/24342156/what-are-watch-descriptors-really-linux-inotify-subsyste ...

  10. Bower安装Bootstrap

    1.Bower简介 官网:https://bower.io/ Bower can manage components that contain HTML, CSS, JavaScript, fonts ...