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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Druid介绍及入门[通俗易懂]

    Druid介绍及入门[通俗易懂]1.什么是Druid?Druid是一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。Druid采用的架构: shared-nothing架构与lambda架构 Druid设计三个原则:1.快速查询(FastQu…

    2022年7月23日
    6
  • phpstorm免费永久激活码(JetBrains全家桶)「建议收藏」

    (phpstorm免费永久激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlF6EG2ZUBVX-eyJsaWN…

    2022年3月28日
    641
  • Springmvc工作原理详解

    Springmvc工作原理详解关于三层架构和MVC我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器。在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们课程中的案例也都是基于三层架构设计的。三层架构中,每一层各司其…

    2022年5月15日
    38
  • Java线程池设置名称,看完必会

    点击上方☝,轻松关注!及时获取有趣有料的技术文章本文讲一下Java线程池中创建 ThreadFactory 设置线程名称的三种方式。设置线程名称是很重要的,如果你没有设置过,说明你还“涩…

    2022年2月28日
    140
  • 深度学习—3.Pytorch基础

    深度学习—3.Pytorch基础

    2021年10月5日
    43
  • 日本免费空间Atpages.jp老牌稳定支持PHP,CGI和2style.net多域名空间[通俗易懂]

    日本免费空间Atpages.jp老牌稳定支持PHP,CGI和2style.net多域名空间[通俗易懂] 在上一篇的法国,意大利免费空间其实就已经注意到了Atpages.jp和2style.net这两个日本的免费空间了,本来还想介绍一下hosting.kr这个韩国的免费空间,但是该空间要求韩国的D理才能申请,在网上找了半天,也没有找到免费可用的。 话说这韩国的D理真是稀缺呀,只好对hosting.kr这个免费空间作罢了。Atpages.jp这是日本一个老牌的免费空间了,提供1G空间,支持PHP,C…

    2022年7月11日
    42

发表回复

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

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