当前位置: 首页 > news >正文

BigDecimal在进行除法运算时需要注意四舍五入的位置

我们在进行A除B的时候,需要将四舍五入的逻辑放入除法的过程中就定义,不要等到A/B结果出来了再去进行四舍五入,这样会出现问题。下面举例

10%3

我们拿10除3为例,很明显,结果是一个除不尽的小数3.3333…

直接除
    public static void main(String[] args) {BigDecimal A = new BigDecimal("10");BigDecimal B = new BigDecimal("3");System.out.println(A.divide(B).setScale(2, RoundingMode.HALF_UP));}

结果报错Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 表示没有精确的表示decimal结果,异常在除法计算的过程中就抛出了,所以都没走到setScale()方法

正确的方式
    public static void main(String[] args) {BigDecimal A = new BigDecimal("10");BigDecimal B = new BigDecimal("3");System.out.println(A.divide(B, 2, RoundingMode.HALF_UP));}

结果为3.33,正确的保留两位小数和四舍五入了,这是在除法计算的过程中就执行了的。

http://www.lryc.cn/news/504684.html

相关文章:

  • 第二部分:进阶主题 14 . 性能优化 --[MySQL轻松入门教程]
  • Mac电脑设置鼠标的滚轮方向
  • 【LDAP】LDAP概念和原理介绍
  • Android系统(android app和系统架构)
  • Android HandlerThread、Looper、MessageQueue 源码分析
  • HTML知识点详解教程
  • [数据结构#1] 并查集 | FindRoot | Union | 优化 | 应用
  • 科研绘图系列:R语言绘制网络图和密度分布图(network density plot)
  • Linux中输入和输出基本过程
  • 使用 acme.sh 签发和自动续期 ssl https 证书
  • spring重点面试题总结
  • 新的一章:codegeex
  • 游戏引擎学习第50天
  • 快速理解类的加载过程
  • 医院跌倒检测识别 使用YOLO,COCO ,VOC格式对4806张原始图片进行标注,可识别病人跌倒,病人的危险行为,病床等场景,预测准确率可达96.7%
  • [Unity Shader] 【游戏开发】【图形渲染】Unity Shader的种类2-顶点/片元着色器与固定函数着色器的选择与应用
  • 浏览器端的 js 包括哪几个部分
  • GoogLeNet网络:深度学习领域的创新之作
  • 深入C语言文件操作:从库函数到系统调用
  • Java序列化
  • 基坑表面位移沉降倾斜自动化监测 非接触式一体化解决机器视觉
  • 提升效率:精通Windows命令行的艺术
  • ESP32-S3-devKitC-1 点亮板上的WS2812 RGB LED
  • python调用matlab函数(内置 + 自定义) —— 安装matlab.engine
  • CAD c# 生成略缩图预览
  • 端点鉴别、安全电子邮件、TLS
  • 汽车电子元件的可靠性保障:AEC-Q102认证
  • 主成分分析法大全(包括stata+matlab)
  • ubuntu+ros新手笔记(五):初探anaconda+cuda+pytorch
  • C++ List(双向链表)