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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 小学六年级的读者,自学计算机,会爬虫,搞崩过学校网站,还有 Girlfriend…..[通俗易懂]

    小学六年级的读者,自学计算机,会爬虫,搞崩过学校网站,还有 Girlfriend…..[通俗易懂]大家好,我是小林。我之前遇到一个很奇怪的读者,他的头像是电影《V字仇杀队》里的面具。感觉上去是一个黑客爱好者,不是一个好惹的家伙,小林看了瑟瑟发抖。结果,他来了这么一句,「哥哥,在吗?」我头顶瞬间冒出一万个问号,怎么跟头像冷酷的感觉完全相反。只听过有的读者叫我小林哥,但是还真没遇到过直接称呼哥哥的,能说出这个称呼的话,感觉对方年纪不大。然后,他请教我关于kaliLinux安装失败的问题要怎么解决,我没有安装过,所以我也没办法解决他的问题,就让他自己去网上搜搜看看。然后,他还是没解决,

  • java版本结巴分词算法bug[通俗易懂]

    java版本结巴分词算法bug[通俗易懂]Nevertolate。所以明天再做也不会晚结巴分词的过程是:1、根据dict.txt中的词库构建一棵trie树,这棵树的实例只有一个,采取单例模式。2、每来一次分词构造,就顺着trie树进行分词,这将产生很多种结果,于是就生成了一个DGA,分词的有向无环图,终点是句子的左边或者右边(实际上应该分别以左边和右边为终点来做处理)。3、利用动态规划,从句子的终点开始,到这算回去(这个在动态…

  • MATLAB 插值放大

    MATLAB 插值放大采用matlab内部的函数来实现最邻近插值、双线性插值和双三次插值,实现2倍放大。代码如下:I=imread(‘lena.bmp’);imshow(I);I1=imresize(I,2,’nearest’);figureimshow(I1);I2=imresize(I,2,’bilinear’);figureimshow(I2);I3=imresiz…

  • 照片怎样编辑文字_微信编辑文字显示全文

    照片怎样编辑文字_微信编辑文字显示全文Jeditable-jQuery就地编辑插件使用jeditable是一个jquery插件,它的优点是可以就地编辑,并且提交到服务器处理,是一个不可多得的就地编辑插件。(注:就地编辑,也有称即时编辑

  • 《增长黑客》节选与笔记[通俗易懂]

    《增长黑客》节选与笔记[通俗易懂]《增长黑客》节选与笔记自序1.1 创业家的黑暗前传1.2 增长黑客的胜利1.3 什么是“增长黑客”1.4 增长黑客的职责和特质1.5 一切用数据说话1.6 增长黑客担任的团队角色1.7 如何招聘增长黑客1.8 如何成为增长黑客1.9 增长黑客的常用工具箱第2章 创造正确的产品2.1 Instagram重生记2.2 PMF,探寻产品与市场的完美契合2.3 拒绝…

  • 如何配置Linux系统的IP地址?

    如何配置Linux系统的IP地址?

发表回复

您的电子邮箱地址不会被公开。

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