java加减乘除工具类_Java工具类(util) 之01- 数学运算工具(精确运算)

这是一个Java工具类,用于进行精确的数学运算,包括加、减、乘、除等操作,利用BigDecimal避免浮点数运算的不精确性,提供四舍五入和比较方法。
摘要由CSDN通过智能技术生成

数学运算工具(精确运算)

/**

*

* @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常用类(四)之数组工具类Arrays

前言 数组的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作. 一.Arra ...

Java常用类(五)之集合工具类Collections

前言 Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作, 还提供了将集合对象置为不可变.对集合对象实现同步控 ...

小米开源文件管理器MiCodeFileExplorer-源码研究&lpar;3&rpar;-使用最多的工具类Util

Util.java,使用最广泛~代码中很多地方,都写了注释说明~基本不需要怎么解释了~ package net.micode.fileexplorer.util; import java.io.Fil ...

工具类分享之获取Request&sol;Response工具类《RequestContextHolderUtil》

版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aiyaya_/article/details/78975893前言在开发spring web项目时, ...

Android工具类-关于网络、状态的工具类

下方是一个很好的监测网络.状态的工具类 public class NetworkUtils { /** * 网络是否可用 * * @param activity * @return */ public ...

57&period; Collections&lpar;list的工具类&rpar;、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( ...

工具类Util类的注释书写规范

package com.paic.pacz.core.salesmanage.util; import java.util.List; import org.apache.commons.beanut ...

随机推荐

html5&plus;go&plus;websocket简单实例代码

这次的就直接发放代码截图吧,应该是用go语言做后台一个简易的聊天,这里没用到什么特别的知识,最朴实的来实现效果,主要目的是分享下h5怎么用websocket,go搭建websocket服务的主要部分. ...

jquery操作dom

1访问元素(属性,内容,值,css) 1元素属性(获取,设置,删除) .attr(name) .attr(key, value)  || .attr({key0:value0, key1:value1 ...

快速学习C语言一&colon; Hello World

估计不会写C语言的同学也都听过C语言,从头开始快速学一下吧,以后肯定能用的上. 如果使用过其它类C的语言,如JAVA,C#等,学C的语法应该挺快的. 先快速学习并练习一些基本的语言要素,基本类型,表达 ...

qstring与char&ast;、基本数据类型的转换

1.qstring转化为char* QString.toStdString.c_str() 2.char*转化为QString str = QString(QLatin1String(mm)); 3. ...

MVC项目内无法添加System&period;Web&period;Optimization

MVC项目内无法添加System.Web.Optimization Nuget:Install-PackageMicrosoft.AspNet.Web.Optimization

Windows环境下配置Vim为Python的IDE

(一)安装Python 2.7 在官网下载Python,并安装,我的安装路径是D:\Program Files\Python.安装完成后编辑环境变量Path,在其后添加;D:\Program File ...

List小结

假设有两个List集合,找出集合中重复的部分: //检测listX和listY中的重复部分 //把X复制到Z避免循环同时操作X从而出现异常              itemX.ForEach(i = ...

cocos2dx伸缩式列表效果

效果: 代码: ElasticListView.h #pragma once //std #include #include //cocos #i ...

hdu 3966 Aragorn&amp&semi;&num;39&semi;s Story&lpar;树链剖分&plus;树状数组&rpar;

pid=3966" target="_blank" style="">题目链接:hdu 3966 Aragorn's Story 题目大意:给定 ...

UIImage分类&colon;返回一个可以拉伸的图片

// 返回一个可拉伸的图片 // UIImage的分类 + (UIImage *)resizedImage:(NSString *)name { UIImage *image = [self imag ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值