package com.framework.util;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* @author ZhangKaiXuan
*
* @date 2019年11月1日
*
*/
public class CalculatorUtils {
/**
* double 相加
*
* @param d1
* @param d2
* @return
*/
public static Double sum(Double d1, Double d2) {
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal bd2 = new BigDecimal(d2);
return bd1.add(bd2).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* double 相减
*
* @param d1
* @param d2
* @return
*/
public static Double sub(Double d1, Double d2) {
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal bd2 = new BigDecimal(d2);
return bd1.subtract(bd2).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* double 乘法
*
* @param d1
* @param d2
* @return
*/
public static Double mul(Double d1, Double d2) {
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal bd2 = new BigDecimal(d2);
return bd1.multiply(bd2).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* double 除法
*
* @param d1
* @param d2
* @param scale 四舍五入 小数点位数
* @return
*/
public static double div(Double d1, Double d2, int scale) {
BigDecimal bd1 = new BigDecimal(d1);
BigDecimal bd2 = new BigDecimal(d2);
return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* @Title: format_B @Description: TODO( ) @param: @param
* num @param: @return @return: String @throws
*/
public static String format_B(double num) {
DecimalFormat df = new DecimalFormat("0.00%");
return df.format(num);
}
/**
* 四舍五入
*
* @param value需要四舍五入的数字
* @param scale小数点后保留五位小数
* @return
*/
public static Double round(Double value, int scale) {
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(scale, 5);
double d = bd.doubleValue();
bd = null;
return d;
}
/**
* 四舍五入
*
* @param value需要四舍五入的数字
* @param scale小数点后保留两位小数
* @return
*/
public static double round2Up(double d) {
BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);
return bg.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;
}
}
相关推荐
Java 加减乘除工具类(解决精度损失问题)
唔,其实里面就是一个工具类,加减乘除、保留两位小数。一共5个方法。。。emmmm.....为啥分这么高呢。因为宝宝想分想疯了。 附代码,有土豪就打赏打赏,没土豪的直接拿去使吧。 package cn.cisdom.base.utils; import java.math.BigDecimal; import java.text.DecimalFormat; public class Calculation { public static final DecimalFormat df = new DecimalFormat("######0.00"); /** * @methodName format2point * @desc 保留两位小数点 * @param value * @return java.lang.String * @author xm * @create 2018/6/7 12:03 **/ public static String format2point(Number value) { return df.format(value); } public static Double add(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * * @param value1 * 减数 * @param value2 * 被减数 * @return 两个参数的差 */ public static Double sub(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * * @param value1 * 被乘数 * @param value2 * 乘数 * @return 两个参数的积 */ public static Double mul(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.multiply(b2).doubleValue(); } /** * 提供精确的除法运算。 * * @param value1 * 除数 * @param value2 * 被除数 * @return 除数/被除数 */ public static Double div(Number value1, Number value2) { //MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//精度为2,舍入模式为大于0.5进1,否则舍弃 BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.divide(b2).doubleValue(); } public static void main(String[] args) { Double aDouble=Calculation.add(56.9, 1.67); System.out.println(aDouble); Double bDouble=Calculation.sub(99.2,aDouble); System.out.println(bDouble); } }
Java Double类型数据运算工具(BigDecimal)
说明:Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+...
自动驾驶仿真 (四)—— 基于PreScan与Simulink的AEB系统多场景验证
本文详细介绍了基于PreScan与Simulink的AEB系统多场景验证方法,涵盖标准场景搭建、复杂工况扩展及控制策略优化。通过仿真技术,显著降低测试成本并提升场景覆盖率,有效解决实车测试中的痛点问题。特别适用于自动驾驶领域的AEB系统开发与验证。
Java中处理double、float、Double、Float、BigDecimal、String类型对象的小数工具类,保留小数位或取整,是否四舍五入
由于每次都要处理小数,很麻烦,所以封装一个工具类来去处理,这个工具类专门用来处理小数位的,就比如我是double、float、Double、Float、BigDecimal、String这些。工具类提供三个参数,一个是泛型的value用来传入任何类型的(double、float、Double、Float、BigDecimal、String)值,一个是保留多少位scale用来截取多少位,一个是是否需要四舍五入判断指标isHalf用来判断是否需要四舍五入,如我value是double类型1.336,scale是
手把手教你用AirSim生成无人机训练数据集:RGB/深度图/分割图全攻略
本文详细介绍了如何使用AirSim仿真插件在UE4环境中生成无人机训练数据集,涵盖RGB、深度图和分割图等多种模态数据的采集与处理。通过实战指南,读者可以掌握环境配置、多模态数据采集、自动化流程设计及数据后处理等关键技术,为无人机视觉算法开发提供高质量训练数据。
单细胞数据互转实战:从Scanpy的h5ad到Seurat对象的四种高效方法
本文针对单细胞数据分析中Scanpy的h5ad格式与Seurat对象互转的常见难题,详细对比了SeuratDisk、anndataR、schard和sceasy四种高效转换方法。文章从实战出发,剖析了每种方法的原理、操作流程、优缺点及避坑指南,并提供了清晰的选型策略,帮助用户根据数据特点选择最佳方案,实现跨平台数据的无缝衔接。
Double数值精准计算的工具类
public class DoubleUtils { /** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal
Labview调用C++ dll之字符串数组传递
做项目的时候碰到了一个需求,有一个复杂的运算,用labview实现非常的麻烦,但是如果用C++实现,就会灵活很多。尝试着采用Labview调用C++编写的动态链接库方式解决,兼顾Labview的便利和C++的灵活性。 运算好说,主要难点是Labview与C++之间的数据对应关系,因为我最后的结果是既有字符串又有数字,对于单纯的数字来说,直接通过调用数组的方式就能解决,这里主要记录一下字符串数组...
java计算Doble工具类
java计算Doble工具类 package com.wx.util; import java.math.BigDecimal; import java.util.List; public class ArithUtils { /** * 提供精确加法计算的add方法 * * @param value1 被加数 * @param value2 ...
【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率
本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。
小红书直播弹幕采集
本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。
java 数学计算库_数学计算工具类
[java]代码库/*** Description: [数字计算工具类]* @version 1.0*/public class MathUtils {/** 一百的常量 */private static final int HUNDRED_NUMBER = 100;/** 默认保留小数位数 */private static final int DEFAULT_DECIMAL_NUMBER = 2...
51智能小车(双轮)
前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。
java基础学习四
一。java中的基本数据类型 二。double和float精度不准的问题 double和float本身确实存在某种缺陷,不能用于精确计算。 解决办法: 用java.math.BigDecimal,通过BigDecimal类可以解决上述问题 ArithUtil是自定义的一个工具类,封装了加减乘除操作。 packageex; ...
MTK-Android12开机应用自启需求-自定义原生Launcher3 主界面布局图标
MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标。添加一个属性定义即可,如下:这里自定义一个属性目的是为了在加载Launcher3启动时候从属性获取需要自启动应用的包名,可以扩展动态替换 自启动包名。这里有两种方案,要么在Launcher3里面实现,要么在系统服务里面在开机时候启动第三方一次。这里强烈建议在Launcher3中去实现,体验效果更好。// 第一步:定义属性,// 第二步:在onCreate 方法中获取属性并启动应用。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
java当中float以及double数据类型的掌握
java当中默认声明的小数是double类型的; * double d=4.0 * 如果声明: * float x = 4.0则会报错,需要如下写法: * float x = 4.0f或者float x = (float)4.0 * 其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义 * * float 内存分配4个字节
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
java double类型数据操作工具类
packagecom.hojo.avengers.lib.utils; importjava.math.BigDecimal; /** * *@ClassName:DoubleOperationUtils *@Description:封装double类型数据+-*%等运...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
Java BigDecimal工具类,计算double数据防止精度丢失
Java BigDecimal工具类,计算double数据防止精度丢失 package m.system.util; import java.math.BigDecimal; public class BigDecimalUtil { /** * double类型精确相加 v1+v2 * @param v1 * @param v2 * @return */ publi...
string转double java_Java String转double
Java String转double1 Java String转double的介绍我们可以使用Double.parseDouble() 方法在Java中将String转换为double。2Java String转double的应用场景如果必须对包含双数的字符串执行数学运算,则通常使用它。每当我们从文本字段或文本区域获取数据时,输入的数据都会作为字符串接收。如果输入的数据为double,则需要将字...
double 不能为 null !double和Double不一样?
Double和double是两个不同类型!?有什么区别?
Double类型丢失精度的两种解决方案
继续使用Double类型 其实只要在计算时使用封装的工具类,继续使用Double类型精度也不会丢失;转换为BigDecimal时,构造函数采用String那一个。 package com.sugarppig.general.utils; import com.sugarppig.common.exception.GeneralException; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Arr
Double类型加减乘除运算
public class MathDoubleUtil { private static final int DEF_DIV_SCALE = 10; /** * 格式化,double保留两位小数 * @param d2 * @return */ public static String format(Double d2) { ...
Java double相加,数字精度问题
Java double相加,数字精度问题;两个数相加会多出很多位,进度问题:1.7999999999999998,诸如此类;这种问题一般是单纯的将double相加:0.12+0.6所出现 方法实例: public static void main(String[] arg){ double d1 = 1.2; double d2 = 0.6; ...
Java double 改负数
我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java 中如何将 double 类型的数改为负数 在程序开发中,数据的表示和转换是非常常见的需求。在 Java 中,double 类型用于表示带有小数点的浮点数。当我们需要将一个 dou...
java中Double的运算
骑士李四记录: 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(1...
java比较double_如何在Java中比较两个double值?
如何在Java中比较两个double值?Java中两个double值的简单比较会产生一些问题。 让我们考虑以下Java中的简单代码段。package doublecomparision;final public class DoubleComparision{public static void main(String[] args){double a = 1.000001;double b = ...
810



被折叠的 条评论
为什么被折叠?



