java BigDecimal工具类
package com.core.calculate; import java.math.BigDecimal;
import java.text.DecimalFormat; /**
* Created by tangxin on 2017/1/6 0006.
* 如有问题,欢迎提出更正
*/
public class BigNum { public static final String BIG_NUM_FMT_COMMA = "#,###,###,###,###,###,##0.00";//千位分隔符 方便查看金额具体大小
public static final String BIG_NUM_FMT = "##################0.00";//不带千位分隔符
public static final String BIG_NUM_HUNDRED = "100";//100常量
public static final int BIG_NUM_SCALE = 2;//保留两位小数 private BigNum(){ }
/**
* 高精度加法
* @param v1
* @param v2
* @return
*/
public static BigDecimal add(String v1, String v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.add(b2);
} /**
* 高精度减法
* @param v1
* @param v2
* @return
*/
public static BigDecimal sub(String v1,String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.subtract(b2);
} /**
* 高精度乘法
* @param v1
* @param v2
* @return
*/
public static BigDecimal mul(String v1,String v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.multiply(b2);
} /**
* 高精度除法
* @param v1
* @param v2
* @param scale
* @return
*/
public static BigDecimal div(String v1, String v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP);
} /**
* 保留小数位
* @param v
* @param scale
* @return
*/
public static BigDecimal round(String v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(v);
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP);
} /**
* 分转换成元
* @param v
* @return
*/
public static BigDecimal penny2dollar(String v){
BigDecimal s = div(v,"100",2);//保留两位小数
return s;
} /**
* 元转换成分
* @param v
* @return
*/
public static BigDecimal dollar2penny(String v){
return mul(v, "100");
} /**
* 格式化金额
* 千位分隔符 方便查看金额具体大小 BIG_NUM_FMT = "#,###,###,###,###,###,##0.00"
* 精确两位小数 .99 -> 0.99
* 1111111.985 -> 1,111,111.99
* @param v
* @return
*/
public static String formatNumber(String v){
return formatNumber(v,BIG_NUM_FMT_COMMA);
} /**
* 格式化金额
* @param v
* @param pattern BigNum类中的常量 BIG_NUM_FMT_COMMA,BIG_NUM_FMT
* @return
*/
public static String formatNumber(String v,String pattern) {
return new DecimalFormat(pattern).format(new BigDecimal(v));
} public static void main(String[] args) {
System.out.println(BigNum.add("1.99","20.999"));
System.out.println(BigNum.sub("1.99","20.999"));
String s = "1111111.985";
String a = BigNum.formatNumber(s);
System.out.println(s);
System.out.println(a);
}
}
java BigDecimal工具类的更多相关文章
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
随机推荐
- mac上Apache修改目录浏览权限
sudo vim /etc/apache2/httpd.conf <Directory "/Library/WebServer/Documents"> # # Poss ...
- iOS Dispatch_sync 阻塞线程的原因
大家的知道在主队列上使用dispatch_sync(), - (void)testSyncMainThread { dispatch_queue_t main = dispatch_get_main_ ...
- make 出错: /usr/bin/ld: cannot find -lrt
make 出错:/usr/bin/ld: cannot find -lrtcollect2: ld returned 1 exit statusmake: *** [page_parser] Erro ...
- 2018.5.23 创建用户并授权&&&序列
作业一 视图的创建 1.分页查询2-3范围之间的数据,并用视图(view_student_page)保存. create view view_student_page as select * from ...
- CopyOnWriteArrayList分析——能解决什么问题
CopyOnWriteArrayList主要可以解决的问题是并发遍历读取无锁(通过Iterator) 对比CopyOnWriteArrayList和ArrayList 假如我们频繁的读取一个可能会变化 ...
- InstallShield Limited Edition for Visual Studio 2013 图文教程打包安装包
http://www.wuleba.com/23892.html 从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而让大家去安装使用第三方的打包工具“Inst ...
- 问题001:Java软件,属于系统软件还是应用软件呢?
在学习Java前要掌握的一些小问题: 问题一:Java软件,属于系统软件还是应用软件呢? java语言应用在计算机系统上,首先应知道计算机系统分为几部分? 计算机系统由硬件系统和软件系统两部分构成.硬 ...
- 一、Linux 安装
Linux 安装 本章节我们将为大家介绍Linux的安装. 本章节以 centos6.4 为例. centos 下载地址: 可以去官网下载最新版本:https://www.centos.org/dow ...
- 《TensorFlow实战》中AlexNet卷积神经网络的训练中
TensorFlow实战中AlexNet卷积神经网络的训练 01 出错 TypeError: as_default() missing 1 required positional argument: ...
- PHP添加扩展模块的方法
进入源码包对应扩展模块目录下 ##extname 代表扩展模块名 cd /usr/local/src/php-5.5.36/ext/extname 然后执行phpize##phpize是一个shell ...