文章目录

  • BigDecimal 除法
    • 除法
      • 常用方法
      • 示例
      • 舍入模式
        • ROUND_UP
        • ROUND_DOWN
        • ROUND_CEILING
        • ROUND_FLOOR
        • ROUND_HALF_UP
        • ROUND_HALF_DOWN
        • ROUND_HALF_EVEN
        • ROUND_UNNECESSARY

BigDecimal 除法

除法

常用方法

divide(BigDecimal divisor, int scale, int roundingMode)

参数 释义
divisor 被除数
scale 保留小数位
roundingMode 舍入模式

示例

BigDecimal b1 = new BigDecimal("3");
BigDecimal b2 = new BigDecimal("7");
//计算b1除以b2的值并四舍五入保留两位小数
b1 = b1.divide(b2, 2 ,BigDecimal.ROUND_HALF_UP);
System.out.println("结果:"+b1);

结果:

结果:0.43

舍入模式

模式 释义
ROUND_UP 只要舍去的值不为0,则进1。如1.010保留一位小数为1.1,保留两位小数为1.01。
ROUND_DOWN 无论舍去的值是多少,直接舍去(截断)。
ROUND_CEILING 向正无穷方向舍入,若是正数则表现为’ROUND_UP’,若为负数则表现为’ROUND_DOWN’。
ROUND_FLOOR 向负无穷方向舍入,若是正数则表现为’ROUND_DOWN’,若为负数则表现为ROUND_UP’’。
ROUND_HALF_UP 四舍五入。
ROUND_HALF_DOWN 五舍六入。
ROUND_HALF_EVEN 若舍去位数左边值为偶数,则五舍六入。若舍去位数左边值为奇数,则四舍五入。
ROUND_UNNECESSARY 断言得数为精确的结果,若不是则抛出ArithmeticException。

ROUND_UP

示例:

BigDecimal b1 = new BigDecimal("1.11");
BigDecimal b2 = new BigDecimal("1.10");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_UP);
b2 = b2.divide(one, 1, BigDecimal.ROUND_UP);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:1.2
b2结果:1.1

ROUND_DOWN

示例:

BigDecimal b1 = new BigDecimal("1.11");
BigDecimal b2 = new BigDecimal("1.10");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_DOWN);
b2 = b2.divide(one, 1, BigDecimal.ROUND_DOWN);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:1.1
b2结果:1.1

ROUND_CEILING

示例:

BigDecimal b1 = new BigDecimal("-1.11");
BigDecimal b2 = new BigDecimal("1.11");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_CEILING);
b2 = b2.divide(one, 1, BigDecimal.ROUND_CEILING);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:-1.1
b2结果:1.2

ROUND_FLOOR

示例:

BigDecimal b1 = new BigDecimal("-1.11");
BigDecimal b2 = new BigDecimal("1.11");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_FLOOR);
b2 = b2.divide(one, 1, BigDecimal.ROUND_FLOOR);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:-1.2
b2结果:1.1

ROUND_HALF_UP

示例:

BigDecimal b1 = new BigDecimal("1.14");
BigDecimal b2 = new BigDecimal("1.15");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_HALF_UP);
b2 = b2.divide(one, 1, BigDecimal.ROUND_HALF_UP);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:1.1
b2结果:1.2

ROUND_HALF_DOWN

示例:

BigDecimal b1 = new BigDecimal("1.15");
BigDecimal b2 = new BigDecimal("1.16");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_HALF_DOWN);
b2 = b2.divide(one, 1, BigDecimal.ROUND_HALF_DOWN);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:1.1
b2结果:1.2

ROUND_HALF_EVEN

示例:

BigDecimal b1 = new BigDecimal("1.15");
BigDecimal b2 = new BigDecimal("1.25");
BigDecimal one = new BigDecimal("1");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_HALF_EVEN);
b2 = b2.divide(one, 1, BigDecimal.ROUND_HALF_EVEN);System.out.println("b1结果:"+b1);
System.out.println("b2结果:"+b2);

结果:

b1结果:1.2
b2结果:1.2

ROUND_UNNECESSARY

结果精度确定:

BigDecimal b1 = new BigDecimal("10");
BigDecimal one = new BigDecimal("2");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_UNNECESSARY);System.out.println("b1结果:"+b1);

结果:

b1结果:5.0

结果精度不确定:

BigDecimal b1 = new BigDecimal("3");
BigDecimal one = new BigDecimal("7");b1 = b1.divide(one, 1 ,BigDecimal.ROUND_UNNECESSARY);System.out.println("b1结果:"+b1);

结果:

Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.commonNeedIncrement(BigDecimal.java:4148)
at java.math.BigDecimal.needIncrement(BigDecimal.java:4204)
at java.math.BigDecimal.divideAndRound(BigDecimal.java:4112)
at java.math.BigDecimal.divide(BigDecimal.java:5183)
at java.math.BigDecimal.divide(BigDecimal.java:1561)
at test.test.main(test.java:10)

BigDecimal 除法相关推荐

  1. BigDecimal 除法运算提示:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repres

    业务场景 今天在计算重点工程总数占比工程总数(百分比)的时候,遇到一个错误:java.lang.ArithmeticException: Non-terminating decimal expansi ...

  2. bigDecimal除法取整数

    bigDecimal加减乘法都没问题,除法由于会有除不尽小数的情况,如果不限制小数位数的话会进入死循环报错:java.lang.ArithmeticException: Non-terminating ...

  3. java8 BigDecimal 除法保留三位小数 后面小数进位处理

    Java 8 中,可以使用 BigDecimal 类来处理高精度的小数除法.可以使用 setScale() 方法来保留小数位数,并使用 RoundingMode 来设置舍入模式. 例如,如果要将除法结 ...

  4. BigDecimal 除法 divide方法参数,各参数作用,详细~

    BigDecimal 多参自定义除法 public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) public ...

  5. bigdecimal除法不四舍五入_BigDecimal四舍五入与保留位

    1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确 ...

  6. BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represent

    两个BigDecimal类型的数字做除法运算时,出现如下异常信息: 1 java.lang.ArithmeticException: Non-terminating decimal expansion ...

  7. bigdecimal 除法保留两位小数_【名师课堂】苏教数学五年级上总复习9.4小数的四则计算...

    微课视频第一课时 微课视频第二课时 电子课本 同步练习 一.计算 15.3+4.72+4.7+5.28               3.5×5.2+0.35×48 34.8-(4.8+9.7)     ...

  8. BigDecimal除法,并保留小数后两位

    public static void main(String[] args) {BigDecimal a;BigDecimal b;a = new BigDecimal(3);b = new BigD ...

  9. BigDecimal除法后保留两位小数

    BigDecimal numBigDecimal=new BigDecimal(5.33); numBigDecimal=ConvertNumber(numBigDecimal,3,2);//调用,5 ...

最新文章

  1. MaxCompute Mars开发指南
  2. xdg-open 打开“irc:*”链接
  3. NameServer的总控逻辑
  4. windows下SecureCRT无法使用backspace(空格键)和上下左右键
  5. copying mysql status_mysql慢查询copying to tmp table
  6. C++的RTTI基本原理
  7. 携程App的网络性能优化实践
  8. [Offer收割]编程练习赛48
  9. mysql 文本处理函数,MySQL常用的文本处理函数
  10. 使用sentencepiece模型替换词表
  11. JVM笔记(B站宋红康课件)
  12. python sobel算子_图像边缘检测:Canny算子、Prewitt算子和sobel算子
  13. AutoCAD DWG 读模块参数:处理块
  14. 手把手教你手工焊接贴片元件(图文教程)
  15. mysql中column的用法_关于MySQL的一些用法
  16. Detected outdated SDK Tools version 0.0.0 when the min version is XXX
  17. XZK-JAVA-支线任务-010605-MVC,登陆案例
  18. UCF Local Programming Contest Round 1A 【2021-7-20】
  19. 计算机网络—数据交换方式
  20. 案例-使用python实现基于opencv的形状识别

热门文章

  1. 有趣好玩的带音乐24H全自动在线要饭系统源码
  2. 深入理解 DRM (1) --了解Widevine与OEMCrypto
  3. 9个非常漂亮的国外网页设计
  4. 自动控制原理(4) - 时域分析
  5. windows7 前置耳机插孔无声音解决办法
  6. Linux - dsta 命令详解
  7. OpManager 虚拟化管理
  8. 【计算机网络】-【考研复试面试】-整合
  9. Android启动模式SingleInstance
  10. BigGAN-论文阅读笔记