package com.org.assistant.util;
import java.math.BigDecimal;
public class Arith {
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算。
* @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();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由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();
}
/**
* 提供精确的类型转换(Float)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static float convertsToFloat(double v){
BigDecimal b = new BigDecimal(v);
return b.floatValue();
}
/**
* 提供精确的类型转换(Int)不进行四舍五入
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static int convertsToInt(double v){
BigDecimal b = new BigDecimal(v);
return b.intValue();
}
/**
* 提供精确的类型转换(Long)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static long convertsToLong(double v){
BigDecimal b = new BigDecimal(v);
return b.longValue();
}
/**
* 返回两个数中大的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中大的一个值
*/
public static double returnMax(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.max(b2).doubleValue();
}
/**
* 返回两个数中小的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中小的一个值
*/
public static double returnMin(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.min(b2).doubleValue();
}
/**
* 精确对比两个数字
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
*/
public static int compareTo(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.compareTo(b2);
}
}
分享到:
相关推荐
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
Java 中 BigDecimal 的常用方法归类(加减乘除) Java 中的 BigDecimal 类提供了对浮点数的精确运算,包括加减乘除和四舍五入等操作。在 Java 中,简单类型不能够精确地对浮点数进行运算,因此需要使用 BigDecimal ...
该类的实现同本人转载的一篇博文:对BigDecimal常用方法的归类中的Arith类相同。 数据挖掘贝叶斯算法的Java实现可以用于小规模数据集的实验和测试,但不适合用于工程应用。如果需要应用于大规模数据集或工程应用,...
计算机二级算法重点.doc
【目标检测】脚印检测数据集819张YOLO+VOC.docx
网络广告的现状及未来发展.docx
【目标检测】12种家具家电检测数据集7656张YOLO+VOC格式.docx
电大C语言程序设计期末考试试题A.doc
网络营销测试试卷.docx
自学考试管理系统中的计算机应用试题和答案.doc
西南大学网络与继续教育学院课程考试试题汽车文化.doc
电子商务系统分析与设计开发技术.doc
江苏省中小学教师健康知识网络竞赛含答案.doc
计算机系统集成项目经理聘用协议书.doc
电大操作系统本期末复习材料新版.doc
内容概要:本文档详细介绍了MySQL 8.0版本的安装与配置流程,包括下载、安装、环境配置以及环境变量的设置。首先,介绍了MySQL的下载方式,区分了在线安装和离线安装的特点,并推荐离线安装。接着,逐步讲解了安装过程中不同安装类型的选项,如开发者默认、仅服务器、仅客户端、完整安装和自定义安装,并重点描述了自定义安装的步骤,包括选择版本、设置安装路径和数据存储路径、配置环境(对于未安装环境的计算机)、安装MySQL、选择网络类型、设置身份验证方法和密码。最后,指导用户配置环境变量,并提供了检查环境变量配置是否成功的具体方法。 适合人群:适合初次接触MySQL数据库的用户,尤其是需要在本地计算机上搭建MySQL环境的学习者或开发者。 使用场景及目标:①帮助用户从零开始搭建MySQL 8.0环境,适用于个人学习或小型项目开发;②确保用户能够顺利完成MySQL的安装与配置,掌握基本的操作技能;③为后续深入学习MySQL提供必要的基础支持。 阅读建议:由于安装过程涉及多个步骤,建议读者按照文档中的顺序逐步操作,遇到问题时仔细检查每一步的设置是否正确,同时注意根据自己的实际需求选择合适的安装类型和配置选项。
要服务委托协议服务网络覆盖区域.docx
秋东财建设工程项目管理在线作业二参考答案.docx
微信自定义表情包导出功能,python
秋季电大湖南省开课程网络形考电子商务概论第二次作业分答案至章.doc