BigDecimal 除法

BigDecimal 除法文章目录BigDecimal除法除法常用方法示例舍入模式ROUND_UPROUND_DOWNROUND_CEILINGROUND_FLOORROUND_HALF_UPROUND_HALF_DOWNROUND_HALF_EVENROUND_UNNECESSARYBigDecimal除法除法常用方法divide(BigDecimaldivisor,intscale,introundingMode)参数释义divisor被除数scale保留小数位roun

大家好,又见面了,我是你们的朋友全栈君。

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)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147669.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 算法 时间复杂度概念及案例

    算法 时间复杂度概念及案例通过时间复杂度可以判断程序算法过程的优势和劣势,提高运行性能

    2022年5月14日
    46
  • Python数据分析实例

    Python数据分析实例Python数据分析Python爬取网页数据

    2022年4月28日
    40
  • 双系统 Win10下安装Linux(单/双硬盘)

    双系统 Win10下安装Linux(单/双硬盘)双系统Win10下安装Linux(单/双硬盘)

    2022年7月24日
    30
  • JAVA面试题库_jpa面试题

    JAVA面试题库_jpa面试题Shiro可以做哪些工作?Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等shiro有哪些组件?Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;SessionManager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会

    2022年10月14日
    0
  • createmutex怎么用_create的用法和短语

    createmutex怎么用_create的用法和短语HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针BOOL bInitialOwner, // 初始化互斥对象的所有者LPCTSTR lpName // 指向互斥对象名的指针);1. CreateMutex只是创建了一把锁,  这把锁你用来锁门还是锁抽屉还是锁

    2022年10月5日
    0
  • JRebel 热部署插件的安装使用

    JRebel 热部署插件的安装使用文章目录Jrebel简介JRebel的安装和使用idea安装JRebelJRebel的使用JRebel的激活Jrebel简介  当你修改doGet,doPost等一些内容时,你再次访问,访问到的内容不变,除非重启或重新加载class文件。  用Jrebel可快速实现热部署,节省了大量重启时间,提高了个人开发效率。JRebel的安装和使用idea安装JRebelNew->settings->plugins->Marketplace搜索插件jrebel进行安装或

    2022年5月22日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号