货币单位类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 ...
随机推荐
- [转]HttpURLConnection的使用
/* * URL请求的类别分为二类,GET与POST请求.二者的区别在于: * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, * b:) post与get ...
- ubuntu安装无线驱动
一.无线驱动的安装. 首先查看自己的网卡类型:lspci -vnn | grep 14e4 查看内核版本: -uname -r 去www.broadcom.com/support/802.11/lin ...
- c#用牛顿法计算根号下2的值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
- fancybox 最基本的使用步骤
初步使用第一步 :引用js和样式 第二步 :设定要触发显示的元素(a标签,链接href指向div的id) <div><a href="#adddivtest" ...
- Jrebel6.3.3破解,配置图文教程
JRebel是个很好的开发工具,我在网上找了好久都没有找到很详细的教程,破解与配置教程千篇一律,步骤不详细.编写这篇教程,综合网络上的知识,加上了自己的理解与详细图文步骤. 安装 一般最新的插件是没有 ...
- Jena语义Web开发101
2015/05/28更新 代码在 https://github.com/zhoujiagen/semanticWebTutorialUsingJena 前言 该手册参考和扩展“Hebeler J, F ...
- CentOS 配置 iptables 配合 ss
转自:http://www.jianshu.com/p/28b8536a6c8a 环境: CentOS 6 shadowsocks iptables 在安装了ss-bash后,ss-bash每添加一次 ...
- bk. 2014.12.1
typedef void (*halKeyCback_t) (uint8 key, uint8 state) 表示定义halKeyCBack_T为指向函数的指针,该函数的特点是形参(uint8,uin ...
- byte与char的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char ...