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)


相关推荐

  • Git创建远程分支并提交代码到远程分支

    Git创建远程分支并提交代码到远程分支1、可以通过gitbranch-r命令查看远端库的分支情况如图所示,远程仓库只有一个master分支2、从已有的分支创建新的分支(如从master分支),创建一个dev分支但此时并没有在远程仓库上创建分支如图所示还是只有一个master分支3、建立本地到远端仓库的链接–这样代码才能提交上去使用命令行gitpush–set-…

  • chinese zodiac signs_icpc铜奖

    chinese zodiac signs_icpc铜奖输入23 14 3输出Impossible2 1 4 33 4 1 24 3 2 1题解 找规律+构造#include<bits/stdc++.h>using namespace std;const int N = 1001;int ch[N][N];int lowbit(int x){ return x & (-x);}int main(){ int n,k; int T; cin>>T; ..

  • SpringBoot自定义starters

    SpringBoot自定义startersSpringBoot自定义starters1、简介2、如何自定义starter1、简介SpringBoot最强大的功能就是把我们常用的场景 抽象成一个个starter(场景启动器),我们通过引入springBoot为我们提供这些场景启动器,我们再进行少量的配置就能使用相应的功能。但是,SpringBoot不能包含所有的场景,经常需要我们自定义starter,来简化我们对springBoot的使用。2、如何自定义starter…

    2022年10月23日
  • 一文详解MOS管驱动电路的核心设计「建议收藏」

    一文详解MOS管驱动电路的核心设计「建议收藏」MOS管电子产品生产中不可或缺的重要保护器件,在手机、笔记本电脑、蓝牙耳机等都有MOS管的身影,可以这样说,有便携式电子产品的地方一定有MOS管的存在,究竟为何MOS管能在竞争激烈的电子行业中脱颖而出,我觉的最主要的原因莫过于MOS管绝佳的性能,如简化驱动电路、自适应能力强、抗干扰能力强等性能使得MOS管崛起的速度快,今天我们要说的是MOS管在驱动电路中的核心设计,为何能让MOS管在竞争如此激烈的…

  • 解决windows update 8024402C错误[通俗易懂]

    解决windows update 8024402C错误[通俗易懂]安装了2003SP1更新时总是会有8024402C错误错误网上daimoon兄的解决方式他的机器在ISASERVER后而我的机器是ISASERVER2004网上daimoon兄的解决方式他的机器在ISASERVER后环境:windowsxpsp1,位于isaserver后问题:使用windowsautoupdate后出错误提示:0x8024402C…

  • asp.net中Session小例子

    asp.net中Session小例子登录界面aspx代码如下:functionisempty(){vartxt_id=document.getElementById(“txt_userID”);if(txt_id.value==””){alert(“请输入用户名!”);

发表回复

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

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