Java工具类(util) 之01- 数学运算工具(精确运算)
数学运算工具(精确运算)
/**
*
* @author maple
*
*/
public abstract class AmountUtil {
private AmountUtil() {
}
/**
* 加法运算
*
* @param v1
* @param v2
* @return
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 减法运算
*
* @param v1被减数
* @param v2减数
* @return
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 乘法运算
*
* @param v1被乘数
* @param v2乘数
* @return
*/
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
*
* 除法运算,当发生除不尽的情况时,精确到小数点以后2位,以后的数字四舍五入
*
* @param v1被除数
* @param v2除数
* @return
*/
public static double div(double v1, double v2) {
return div(v1, v2, 2);
}
/**
*
* 除法运算,当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入
*
* @param v1被除数
* @param v2除数
* @param scale精确到小数点以后几位
* @return
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
*
* 四舍五入
*
* @param v需要四舍五入的数字
* @param scale小数点后保留几位
* @return
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 判断 a 与 b 是否相等
*
* @param a
* @param b
* @return a==b 返回true, a!=b 返回false
*/
public static boolean equal(double a, double b) {
BigDecimal v1 = BigDecimal.valueOf(a);
BigDecimal v2 = BigDecimal.valueOf(b);
if (v1.compareTo(v2) == 0) {
return true;
}
return false;
}
/**
* 判断 a 是否大于等于 b
*
* @param a
* @param b
* @return a>=b 返回true, a<b 返回false
*/
public static boolean greaterThanOrEqualTo(double a, double b) {
BigDecimal v1 = BigDecimal.valueOf(a);
BigDecimal v2 = BigDecimal.valueOf(b);
if (v1.compareTo(v2) >= 0) {
return true;
}
return false;
}
/**
* 判断 a 是否大于 b
*
* @param a
* @param b
* @return a>b 返回true, a<=b 返回 false
*/
public static boolean bigger(double a, double b) {
BigDecimal v1 = BigDecimal.valueOf(a);
BigDecimal v2 = BigDecimal.valueOf(b);
if (v1.compareTo(v2) == 1) {
return true;
}
return false;
}
/**
* 判断 a 是否小于 b
*
* @param a
* @param b
* @return a<b 返回true, a>=b 返回 false
*/
public static boolean lessThan(double a, double b) {
BigDecimal v1 = BigDecimal.valueOf(a);
BigDecimal v2 = BigDecimal.valueOf(b);
if (v1.compareTo(v2) == -1) {
return true;
}
return false;
}
/**
* 四舍五入保留小数点后两位
*
* @param num
* @return
*/
public static double roundDown(double num) {
return Double.valueOf(String.format("%.2f", num));
//return new BigDecimal(num).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static void main(String[] args) {
Double a = 101.005D;
Double b = 0.0D;
Double s = AmountUtil.sub(a, b);
System.out.println(AmountUtil.roundDown(s));
System.out.println(AmountUtil.div(101.1D, 1D, 2));
}
}
Java工具类(util) 之01- 数学运算工具(精确运算)的更多相关文章
- Java常用类(四)之数组工具类Arrays
前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...
- Java常用类(五)之集合工具类Collections
前言 Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作, 还提供了将集合对象置为不可变.对集合对象实现同步控 ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(3)-使用最多的工具类Util
Util.java,使用最广泛~代码中很多地方,都写了注释说明~基本不需要怎么解释了~ package net.micode.fileexplorer.util; import java.io.Fil ...
- Springboot在工具类(Util)中使用@Autowired注入Service
1. 使用@Component注解标记工具类MailUtil: 2. 使用@Autowired注入我们需要的bean: 3. 在工具类中编写init()函数,并使用@PostConstruct注解标记 ...
- 工具类分享之获取Request/Response工具类《RequestContextHolderUtil》
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aiyaya_/article/details/78975893前言在开发spring web项目时, ...
- Android工具类-关于网络、状态的工具类
下方是一个很好的监测网络.状态的工具类 public class NetworkUtils { /** * 网络是否可用 * * @param activity * @return */ public ...
- 57. Collections(list的工具类)、Arrays(数组的工具类)
List集合的工具类(Collections): 注意:Collection是单列集合的根接口 Collections是操作集合对象的工具类 1.对list集合排序: sort(List) 根据自然 ...
- Spring中提供的集合工具类util CollectionUtils
转自:https://blog.csdn.net/fangwenzheng88/article/details/78457850 CollectionUtils类 /* * Copyright 200 ...
- 图片处理工具类 util
PathUtil package util; public class PathUtil { private static String seperator = System.getProperty( ...
随机推荐
- java项目部署运行
运用插件运行项目: tomcat-maven-plugin:1.1 1.右键项目-->run as -->5 maven build-->tomcat:run ...
- MySQL---2、安装与部署
1.MySQL下载 MySQL版本的选择MySQL Community Server 社区版本,开源免费,但不提供官方技术支持.MySQL Enterprise Edition 企业版本,需付费,可以 ...
- C# 利用log4net 把日志写入到数据库表中
效果图: 1:第一步创建SQL表结构 CREATE TABLE [dbo].[LogDetails] ( [LogID] int NOT NULL IDENTITY(1,1) , [LogDat ...
- Windows的图形设备接口与Windows绘图
本次学习目标 理解DC, 映像模式, 坐标系统, 窗口和视口; 学习获取绘图工具(画笔/画刷)的句柄, 设置颜色, 能定义映像模式; 会使用常用的绘图函数. 编写程序: 在屏幕上出现一个圆心沿正弦曲线 ...
- Spring FactoryBean用法
最近在看spring ioc源码,看到FactoryBean这个内容.这个和BeanFactory的区别 1. BeanFactory: 生成bean的工厂,是一个接口,定义了很多方法 2. Fact ...
- java设计模式-----4、单例模式
单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的一个实例对象.也就是说,在整个程序空间中,该类只存在一个实例对象. 其实,GoF对单例模式的定义是:保证一个类,只有一个实例存在 ...
- 跨域方法:JSONP、iframe
同源策略:浏览器出于安全考虑,会限制文档或脚本中发起的跨域请求(但src请求不受此限)资源的加载.实际上通过抓包软件可以发现请求和响应都会成功,但是响应数据并不会被浏览器加载.不同源的客户端脚本(ja ...
- php下载远程大文件(获取远程文件大小)
function download_file($url) { // $url = http://192.168.8.95/vm/download_file?downurl=http://192.168 ...
- 算法之杨辉三角形(Java语言)
杨辉三角形, 又称贾宪三角形.帕斯卡三角形. 前9层写出来如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 ...
- security权限控制
目录 前言 数据库和dimain 静态页面 配置文件 web.xml引入 service校验方法 用户名的获取 不同角色访问控制权限 jsp页面 后台 前言 spring自带角色权限控制框架 用户-角 ...