RoundingMode介绍

RoundingMode是一个枚举类,有以下几个常量:UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN、HALF_EVEN、UNNECESSARY;

UP(BigDecimal.ROUND_UP):

远离零方向舍入的舍入模式(可以理解为向上取整)。此舍入模式始终不会减少计算值的绝对值。

输入值

使用up舍入模式的输出值

5.5

6

2.5

3

1.6

2

1.1

2

1.0

1

-1.0

-1

-1.1

-2

-1.6

-2

-2.5

-3

-5.5

-6

DOWN(BigDecimal.ROUND_DOWN):

向零方向舍入的舍入模式(可以理解为向下取整)。此舍入模式始终不会增加计算值的绝对值。

输入值

使用DOWN舍入模式的输出值

5.5

5

2.5

2

1.6

1

1.1

1

1.0

1

-1.0

-1

-1.1

-1

-1.6

-1

-2.5

-2

-5.5

-5

CEILING(BigDecimal.ROUND_CEILING)

向正无限大方向舍入的舍入模式。如果结果为正,则向上取整;如果结果为负,则向下取整。此舍入模式始终不会减少计算值。

输入值

使用CEILING舍入模式的输出值

5.5

6

2.5

3

1.6

2

1.1

2

1.0

1

-1.0

-1

-1.1

-1

-1.6

-1

-2.5

-2

-5.5

-5

FLOOR(BigDecimal.ROUND_FLOOR):

向负无限大方向舍入的舍入模式。如果结果为正,则向下去整;如果结果为负,则向上取整。此舍入模式始终不会增加计算值。

输入值

使用FLOOR舍入模式的输出值

5.5

5

2.5

2

1.6

1

1.1

1

1.0

1

-1.0

-1

-1.1

-2

-1.6

-2

-2.5

-3

-5.5

-6

HALF_UP(BigDecimal.ROUND_HALF_UP)

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分 >= 0.5,则向上取正;否则向下取整。此舍入模式即四舍五入。

输入值

使用HALF_UP舍入模式的输出值

5.5

6

2.5

3

1.6

2

1.1

1

1.0

1

-1.0

-1

-1.1

-1

-1.6

-2

-2.5

-3

-5.5

-6

 

HALF_DOWN(BigDecimal.ROUND_HALF_DOWN):

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分 > 0.5,则向上取整;否则向下取整。

输入值

使用HALF_DOWN舍入模式的输出值

5.5

5

2.5

2

1.6

2

1.1

1

1.0

1

-1.0

-1

-1.1

-1

-1.6

-2

-2.5

-2

-5.5

-5

HALF_EVEN(BigDecimal.ROUND_HALF_EVEN):

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同 RoundingMode.HALF_UP;如果为偶数,则舍入行为同RoundingMode.HALF_DOWN。注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对float 和double 算法使用的舍入策略。

输入值

使用HALF_EVEN舍入模式的输出值

5.5

6

2.5

2

1.6

2

1.1

1

1.0

1

-1.0

-1

-1.1

-1

-1.6

-2

-2.5

-2

-5.5

-6

UNNECESSARY(BigDecimal.ROUND_UNNECESSARY):

用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。如果需要舍入,则抛出 ArithmeticException。

输入值

使用UNNECESSARY舍入模式的输出值

5.5

throw ArithmeticException

2.5

throw ArithmeticException

1.6

throw ArithmeticException

1.1

throw ArithmeticException

1.0

1

-1.0

-1

-1.1

throw ArithmeticException

-1.6

throw ArithmeticException

-2.5

throw ArithmeticException

-5.5

throw ArithmeticException

BigDecimal 中 关于RoundingMode介绍的更多相关文章

  1. BigDecimal中要注意的一些事

    一.关于public BigDecimal(double val) BigDecimal中三个主要的构造函数 1 public BigDecimal(double val) 将double表示形式转换 ...

  2. AutoMapper之ABP项目中的使用介绍

    最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...

  3. iOS开发UI篇—iPad开发中得modal介绍

    iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...

  4. objective-c 中的关联介绍

    objective-c 中的关联介绍 转载请注明CSDN博客上的出处: http://blog.csdn.net/daiyibo123/article/details/46471993 如何设置关联 ...

  5. ORACLE 中的 锁 介绍

    ORACLE 中的 锁 介绍 Oracle数据库支持多个用户同时与数据库进行交互,每个用户都可以同时运行自己的事务,从而也需要对并发访问进行控制.Oracle也是用“锁”的机制来防止各个事务之间的相互 ...

  6. Android中Snackbar的介绍以及使用

    Android中Snackbar的介绍以及使用 介绍 Snackbar可以说是Toast的升级版,不仅有显示信息的功能,还可以添加一个Action,实现点击功能,可以右滑删除. 效果图 Snackba ...

  7. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

  8. [翻译]Mock 在 Python 中的使用介绍

    目录 Mock 在 Python 中的使用介绍 原文链接与说明 恐惧系统调用 一个简单的删除函数 使用 Mock 重构 潜在陷阱 向 'rm' 中加入验证 将文件删除作为服务 方法 1:模拟实例的方法 ...

  9. netcore中的缓存介绍

    Cache(缓存)是优化web应用的常用方法,缓存存放在服务端的内存中,被所有用户共享.由于Cache存放在服务器的内存中,所以用户获取缓存资源的速度远比从服务器硬盘中获取快,但是从资源占有的角度考虑 ...

随机推荐

  1. 第12组 Alpha冲刺 (1/6)

    过去两天完成了哪些任务 文字描述 静态页面代码编写以及一些点击事件 展示GitHub当日代码/文档签入记录 接下来的计划 1.继续学习echarts 2.编写所需要的图表代码 还剩下哪些任务 1.图表 ...

  2. Python基础(普通函数及参数)

    # def my_abs(x): # if not isinstance(x,(int,float)):#参数类型做检查,只允许整数和浮点数类型的参数.数据类型检查可以用内置函数isinstance( ...

  3. 利用Fastjson注入Spring内存马

    此篇文章在于记录自己对spring内存马的实验研究 一.环境搭建 搭建漏洞环境,利用fastjson反序列化,通过JNDI下载恶意的class文件,触发恶意类的构造函数中代码,注入controller ...

  4. MySQL语法练习一

    DESC t_dept ALTER TABLE t_dept ADD descri VARCHAR(20) ALTER TABLE t_dept ADD decribe VARCHAR(20) FIR ...

  5. 论文解读(LLE)《Nonlinear Dimensionality Reduction by Locally Linear Embedding》and LLE

    论文题目:<Nonlinear Dimensionality Reduction by Locally Linear Embedding > 发表时间:Science  2000 论文地址 ...

  6. [atARC121D]1 or 2

    对于大小为1的集合,我们可以在其中加入0 因此,枚举0的个数,那么问题即可以看作要求每一个集合大小为2 (特别的,我们允许存在$\{0,0\}$,因为这样删除这两个0显然只会减小极差) 显然此时贪心将 ...

  7. [atARC087F]Squirrel Migration

    对这棵树重心情况分类讨论: 1.若这棵树存在两个重心,分别记作$x$和$y$,如果将$(x,y)$断开,两棵子树大小都相同(都为$\frac{n}{2}$),此时$p_{i}$与$i$必然不同属于一个 ...

  8. 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

    RocketMQ的前提回顾 RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆 ...

  9. 【IDEA】IntelliJ IDEA 2020.1破解版

    IntelliJ IDEA 2020.1破解版 2020-09-09  14:58:56  by冲冲 安装链接: 1. 百度网盘下载地址链接:https://pan.baidu.com/s/1cxjz ...

  10. 8.5 Ingress实现基于域名的多虚拟主机、URL转发、及多域名https实现等案例

    1.什么是Ingress Ingress 公开了从k8s集群外部到集群内服务的 HTTP 和 HTTPS 路由. 流量路由由 Ingress 资源上定义的规则控制. 可以将 Ingress 配置为服务 ...