货币单位类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 ...
随机推荐
- Echarts源码总括
Echarts采用MVC模型,典型的以数据驱动视图的逻辑. 所有的用于绘图的元素存放于Echarts::Zrender::storage中,所有的动画对象存放于Echarts::Zrender::an ...
- IE下只读INPUT键入BACKSPACE 后退问题(readonly='true')
在IE下,如果在readonly的input里面键入backspace键,会触发history.back(), 用以下jquery代码修正之 $("input[readOnly]" ...
- SQLite简单使用说明
System.Data.SQLite.dll下载地址 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 选择. ...
- Android重要控件———ListView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- 如何在程序里模拟在cmd里用管理员权限运行一条指令
转自csdn的yangw150,zhao4zhong1 转自http://www.cnblogs.com/del/archive/2008/02/13/1068229.html http://blog ...
- IOS UIWebView引用外部CSS样式(转载)
首先,将要引用的CSS样式导入到工程文件,然后我们可以自己拼装一个网页并引用这个样式,具体代码实现如下: -(void)viewDidLoad { [super viewDidLoad]; NSStr ...
- Linux为什么卡住了?
导读 通过SSH登录Linux服务器时,输完用户名就卡住了,要等待10秒钟才提示密码输入.这究竟是什么原因导致的呢? 10秒钟的时间并不算长,吃个薯片喝口咖啡就过去了.但是作为强迫症患者,我还是容不得 ...
- Linux文件操作 笔记
fstat stat lstat 原型 #include <unistd.h> #include <sys/stat.h> #include <sys/types.h&g ...
- 在Bootstrap中 强调相关的类
.text-muted:提示,使用浅灰色(#999) .text-primary:主要,使用蓝色(#428bca) .text-success:成功,使用浅绿色(#3c763d) .text-info ...
- TestDisk 恢复rm -rf 的文件
Linux操作系统下使用TestDisk恢复已删除的文件或目录 原创作者:szyzln/2015.10.16 转载需注明原始出处! 说明: testdisk和photorec是著名的恢复数据,而绝 ...