BigDecimal 精确算法 工具类

2023-05-16

BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);

//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
if(a.compareTo(b) == -1){
System.out.println(“a小于b”);
}

if(a.compareTo(b) == 0){
System.out.println(“a等于b”);
}

if(a.compareTo(b) == 1){
System.out.println(“a大于b”);
}

if(a.compareTo(b) > -1){
System.out.println(“a大于等于b”);
}

if(a.compareTo(b) < 1){
System.out.println(“a小于等于b”);
}

// 除法运算默认精度
private static final int DEF_DIV_SCALE = 2;

private BigDecimalUtil() {

}


/**
 * 精确加法
 */
public static BigDecimal add(String value1, String value2) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal add = b1.add(b2);
    BigDecimal bigDecimal = add.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确加法
 */
public static BigDecimal add(String value1, String value2, String value3) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal b3 = new BigDecimal(value3);
    BigDecimal add = b1.add(b2).add(b3);
    BigDecimal bigDecimal = add.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确加法
 */
public static BigDecimal add(BigDecimal value1, BigDecimal value2) {
    BigDecimal add = value1.add(value2);
    BigDecimal bigDecimal = add.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确加法
 */
public static BigDecimal add(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
    BigDecimal add = value1.add(value2).add(value3);
    BigDecimal bigDecimal = add.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确减法
 */
public static BigDecimal sub(String value1, String value2) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal subtract = b1.subtract(b2);
    BigDecimal bigDecimal = subtract.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确减法
 */
public static BigDecimal sub(String value1, String value2, String value3) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal b3 = new BigDecimal(value3);
    BigDecimal subtract = b1.subtract(b2).subtract(b3);
    BigDecimal bigDecimal = subtract.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确减法
 */
public static BigDecimal sub(BigDecimal value1, BigDecimal value2) {
    BigDecimal subtract = value1.subtract(value2);
    BigDecimal bigDecimal = subtract.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确减法
 */
public static BigDecimal sub(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
    BigDecimal subtract = value1.subtract(value2).subtract(value3);
    BigDecimal bigDecimal = subtract.setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}

/**
 * 精确乘法
 */
public static BigDecimal mul(String value1, String value2) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal multiply = b1.multiply(b2);
    BigDecimal aamont = multiply.setScale(2, BigDecimal.ROUND_HALF_UP);
    return aamont;
}

/**
 * 精确乘法
 */
public static BigDecimal mul(String value1, String value2, String value3) {
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal b3 = new BigDecimal(value3);
    BigDecimal multiply = b1.multiply(b2).multiply(b3);
    BigDecimal aamont = multiply.setScale(2, BigDecimal.ROUND_HALF_UP);
    return aamont;
}

/**
 * 精确乘法
 */
public static BigDecimal mul(BigDecimal value1, BigDecimal value2) {
    BigDecimal multiply = value1.multiply(value2);
    BigDecimal aamont = multiply.setScale(2, BigDecimal.ROUND_HALF_UP);
    return aamont;
}


/**
 * 精确乘法
 */
public static BigDecimal mul(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
    BigDecimal multiply = value1.multiply(value2).multiply(value3);
    BigDecimal aamont = multiply.setScale(2, BigDecimal.ROUND_HALF_UP);
    return aamont;
}

/**
 * 精确除法
 *
 * @param
 */
public static BigDecimal div(String value1, String value2){
    BigDecimal b1 = new BigDecimal(value1);
    BigDecimal b2 = new BigDecimal(value2);
    BigDecimal bigDecimal = b1.divide(b2, 2, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}




/**
 * 精确除法
 *
 * @param
 */
public static BigDecimal div(BigDecimal value1, BigDecimal value2)  {

    BigDecimal bigDecimal = value1.divide(value2, 2, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}


/**
 *
 * 加权平均单价=(个数*价钱+本期个数*价钱)/(期初数量+本期购进数量)
 *加权平均价 进货
 *primeNumbers  期初个数
 * primePrice   期初价钱
 *
 * currentNumbers 本期数量
 * currentPrice   本期价钱
 * @param
 */
public static BigDecimal wapAdvance(BigDecimal primeNumbers, BigDecimal primePrice, BigDecimal currentNumbers,BigDecimal currentPrice)  {

    BigDecimal prime = primeNumbers.multiply(primePrice);
    BigDecimal current = currentNumbers.multiply(currentPrice);
    BigDecimal primeCurrent = prime.add(current);
    BigDecimal num = primeNumbers.add(currentNumbers);
    BigDecimal bigDecimal = primeCurrent.divide(num, 2, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}


/**
 *
 * 出价
 * (加权值 * 期初数量 -本期退货成本*本期退货数量)/  (库存-本期退货数量)
 *
 *加权平均价 出货
 *primeNumbers  期初个数
 * primePrice   期初价钱
 *
 * currentNumbers 本期退货数量
 * currentPrice   本期退货价钱
 * @param
 */
public static BigDecimal wapOut (BigDecimal primeNumbers, BigDecimal primePrice, BigDecimal currentNumbers,BigDecimal currentPrice)  {
    BigDecimal primeMultiply = primePrice.multiply(primeNumbers);

    BigDecimal currentUltiply = currentPrice.multiply(currentNumbers);
    BigDecimal primeCurrentSubtract = primeMultiply.subtract(currentUltiply);

    BigDecimal divideSubtract = primeNumbers.subtract(currentNumbers);

    BigDecimal bigDecimal = primeCurrentSubtract.divide(divideSubtract, 3, BigDecimal.ROUND_DOWN).setScale(3, BigDecimal.ROUND_HALF_UP);
    return bigDecimal;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigDecimal 精确算法 工具类 的相关文章

  • 【DeeplabV3+】DeeplabV3+网络结构详解

    文章目录 1 常规卷积与空洞卷积的对比1 1 空洞卷积简介1 2 空洞卷积的优点 2 DeeplabV3 43 模型简介3 DeeplabV3 43 网络代码4 mobilenetv2网络代码5 感谢链接 聊DeeplabV3 43 网络前
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • 【DeeplabV3+ MIoU】DeeplabV3+计算评价指标

    文章目录 1 分割常用评价指标1 1 什么是MIoU1 2 什么是PA1 2 什么是MPA 2 根据混淆矩阵计算评价指标2 1 计算MIoU2 2 计算PA2 3 计算MPA 3 计算 MIoU 总体代码4 compute mIoU 函数
  • 【MobileNetV3】MobileNetV3网络结构详解

    文章目录 1 MobileNetV3创新点2 block变成了什么样2 1 总体介绍2 2 SE模块理解2 3 ReLu6和hardswish激活函数理解 3 网络总体结构4 代码解读5 感谢链接 在看本文前 xff0c 强烈建议先看一下之
  • 【Smooth L1 Loss】Smooth L1损失函数理解

    文章目录 1 引言2 L1 Loss3 L2 Loss4 Smooth L1 Loss5 曲线对比分析6 参考链接 1 引言 目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression
  • Command errored out with exit status 1类似问题解决方案

    在使用pip install onnx时遇到如下错误 xff1a Building wheels for collected packages onnx Building wheel for onnx setup py error ERRO
  • 【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程

    文章目录 1 背景介绍2 实验环境3 tf2onnx工具介绍4 代码实操4 1 TensorFlow2与ONNX模型导出4 2 ONNX正确性验证4 3 TensorFlow2与ONNX的一致性检查4 4 多输入的情况4 5 设定输入 输出
  • 如何在Microsoft Edge中更改主页

    By default Microsoft Edge opens with a custom New Tab page full of content Luckily it s easy to open the browser with a
  • 【PaddlePaddle onnx】PaddlePaddle导出ONNX及模型可视化教程

    文章目录 1 背景介绍2 实验环境3 paddle onnx export函数简介4 代码实操4 1 PaddlePaddle与ONNX模型导出4 2 ONNX正确性验证4 3 PaddlePaddle与ONNX的一致性检查4 4 多输入的
  • 【linux命令】如何查看文件/文件夹所占空间大小

    文章目录 1 查看文件大小1 1 方法1 xff1a ls lh1 2 方法2 xff1a du sh1 3 方法3 xff1a stat 2 查看文件夹所占大小2 1 方法1 xff1a du2 2 方法2 xff1a ncdu 1 查看
  • Github+Hexo搭建个人博客(图文详解)

    文章目录 使用Github 43 hexo搭建个人博客 不会让小伙伴们走弯路 1 准备工作 xff1a 安装两个我们本次所需要使用的软件 xff1a 2 注册Github账号以及建立仓库 xff1a https github com htt
  • 2019-12-14-FTP服务器搭建

    title FTP服务器搭建 date 2019 12 14 15 34 19 updated 2019 12 14 15 34 19 categories 服务器 搭建 网络 tags FTP服务器 目录 什么是FTP服务器本地FTP服务
  • 小程序开发需要多少钱?

    小程序开发的费用 xff1a 一般几千到几万不等 看具体要求 其实开发小程序的价格主要取决于你要做多少页面和要做的页面和功能的复杂程度 如果是行业内比较成熟的标准化系统就会相对便宜点 至于开发多少钱 xff0c 这样看你采用以下哪种模式 x
  • Docker 1 - 基本使用

    Docker 文章目录 Docker一 关于 Docker安装 Docker1 查看版本2 安装3 卸载 Docker 常见命令查看Docker 磁盘使用情况清理磁盘停止Docker 服务 二 镜像查看已安装镜像拉取镜像删除镜像查找镜像方式
  • Spring MVC的异常处理和友好页面

    加油 xff0c 新时代打工人 xff01 Spring MVC详细环境配置和入门 Spring MVC 响应数据和结果视图 SpringMVC实现三种文件上传的方式 实现之前把Spring MVC环境配置完成 xff0c 参考以上文章 S
  • oh-my-posh 配置

    官网 oh my poshpowershell windows 安装 oh my posh winget span class token function install span JanDeDobbeleer OhMyPosh 初始化设
  • matplotlib 点线动画

    matplotlib 点线动画 作者的Github 主写 Web Development HTML PHP CSS JS node js Ruby Sketchup API Python Tkinter Django Matplotlib
  • Ocelot+Identity Server

    一 搭建一个ID4 IdServer NetCore API 认证服务器项目 1 1 在该项目中添加Nuget包 vs2 1版本安装IdentityServer4 2 5 3版本 1 2 在ID4 IdServer项目中新建一个Config
  • twitter输不了密码_如何更改您的Twitter密码

    twitter输不了密码 You should use a strong password for every important web service you have While Twitter may not be up there
  • 不忘初心牢记使命文化励志标语墙贴——个性一百剪纸

    不忘初心牢记使命手工剪纸 个性一百定制服务中心 xff0c 可快速定制各类家居家具用品 工艺礼品 图案造型 xff0c 提供从构思到设计到制作一条龙服务 xff0c 您敢想我们敢做 不忘初心牢记使命绘画贴纸 我们不局限于某种商品 xff0c

随机推荐

  • 升级系统的curl命令到最新版

    1 安装repo rpm Uvh http www city fan org ftp contrib yum repo rhel6 x86 64 city fan org release 2 1 rhel6 noarch rpm 2 查看该
  • Mybatis TooManyResultsException问题可能原因及解决方案

    Mybatis TooManyResultsException问题可能原因及解决方案 可能原因 配置文件的对应语句中使用了resultType而非resultMap对应的interface中的返回值并非使用List数据库问题 解决方案 更改
  • 一键关机 / 重启脚本

    关机 span class token shebang important bin bash span span class token builtin class name echo span span class token strin
  • chromium报错: ./chrome: error while loading shared libraries: *** 解决方法

    注 xff1a 笔者所使用系统为Ubuntu2004 首先推荐一个神奇网站 此网站可查询ubuntu所有缺少包的安装方法 一口气装所有缺少的包 xff1a apt install y libatk1 0 0 libatk bridge2 0
  • ubuntu 获取root权限超简单方法

    以下解决上述问题 1 打开终端ctrl 43 alt 43 T输入 sudo s 2 重新设置root密码 3 切换root用户登录 su root 如果之后安装软件因为权限问题 xff0c 直接切换并输入密码即可
  • Java异常详解及自定义异常

    我已经不用 try catch 处理异常了 xff01 太烦人了 51CTO博客 try catch处理什么异常 一 异常的概念 1 定义 xff08 什么是异常 xff1f xff09 异常是例外 xff0c 是一个程序在执行期间发生的事
  • Archlinux 安装、美化、软件入门(一)

    本文章可能更新不及时 xff0c 前往我的博客阅读 xff0c 阅读体验更佳 xff1a https jin dan oier space 前言 本文只适用于 UEFI 引导 本文适用于从 Windows 迁移到 Archlinux 本文作
  • Archlinux 安装、美化、软件入门(二)

    本文章可能更新不及时 xff0c 前往我的博客阅读 xff0c 阅读体验更佳 xff1a https jin dan oier space 0x01 备份数据 使用 微PE 和 DiskGenius 工具进行数据备份和分区克隆 由于在 PE
  • Archlinux 安装、美化、软件入门(三)

    本文章可能更新不及时 xff0c 前往我的博客阅读 xff0c 阅读体验更佳 xff1a https jin dan oier space 0x03 安装系统 从U盘启动 待完善 连接Wi Fi xff08 有线用户直接跳过 xff09 输
  • 如何在笔记本电脑触摸板上进行中键单击

    Most laptop touchpads make it possible to perform a middle click but not all do In some situations you may need to enabl
  • Archlinux 安装、美化、软件入门(五)

    本文章可能更新不及时 xff0c 前往我的博客阅读 xff0c 阅读体验更佳 xff1a https jin dan oier space 0x07 系统美化 GRUB 美化 挑选喜欢的主题并下载 在 Gnome look 网站可以找到 G
  • 系统提示E: Unable to correct problems, you have held broken packages.错误解决

    系统提示E Unable to correct problems you have held broken packages 上网求答 xff0c 发现网上很多人选择用 aptitude xff0c 但是这个一般比较危险 xff0c 并不推
  • Linux kernel升级(详)

    环境 xff1a 系统版本 xff1a CentOS Linux release 7 4 1708 Core 内核版本 xff1a 3 10 0 693 el7 x86 64 内核由3 10升级5 4 升级说明 xff1a Linux Ke
  • stm32之蓝牙模块HC-05使用

    参考资料 xff1a 常用模块 HC 05蓝牙串口通信模块使用详解 xff08 实例 xff1a 手机蓝牙控制STM32单片机 xff09 HC 05蓝牙模块使用教程 HC 05蓝牙模块使用记录 补充与理解 xff1a 套餐有两个板子 一个
  • 2021-09-28->HttpClientUtil 工具包

    span class token keyword package span span class token namespace com span class token punctuation span ruoyi span class
  • 微信通知方法

    span class token comment 微信通知 span span class token function wxMessage span span class token punctuation span userId spa
  • 2021-09-29->微信支付

    接下来看微信支付jsapi接口是怎么调用的 步骤一 xff1a 获取微信支付四大参数 首先要想支持微信支付 必须拥有两个账号 微信公众平台 xff1a 账户 公众APPID xff0c APPSECEPT xff0c 微信商户平台商户ID
  • 20以为加减法

    span class token keyword for span span class token punctuation span span class token keyword int span i span class token
  • coturn服务配置

    COTURN服务配置 准备工作 一台带有公网ip的服务器 xff08 coturn服务部署在具有公网ip的服务器上 xff09 下载coturn wget https span class token operator span span
  • BigDecimal 精确算法 工具类

    BigDecimal a 61 new BigDecimal 101 BigDecimal b 61 new BigDecimal 111 使用compareTo方法比较 注意 xff1a a b均不能为null xff0c 否则会报空指针