BigDecimal 中 关于RoundingMode介绍
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介绍的更多相关文章
- BigDecimal中要注意的一些事
一.关于public BigDecimal(double val) BigDecimal中三个主要的构造函数 1 public BigDecimal(double val) 将double表示形式转换 ...
- AutoMapper之ABP项目中的使用介绍
最近在研究ABP项目,昨天写了Castle Windsor常用介绍以及其在ABP项目的应用介绍 欢迎各位拍砖,有关ABP的介绍请看阳光铭睿 博客 AutoMapper只要用来数据转换,在园里已经有很多 ...
- iOS开发UI篇—iPad开发中得modal介绍
iOS开发UI篇—iPad开发中得modal介绍 一.简单介绍 说明1: 在iPhone开发中,Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 说明2: ...
- objective-c 中的关联介绍
objective-c 中的关联介绍 转载请注明CSDN博客上的出处: http://blog.csdn.net/daiyibo123/article/details/46471993 如何设置关联 ...
- ORACLE 中的 锁 介绍
ORACLE 中的 锁 介绍 Oracle数据库支持多个用户同时与数据库进行交互,每个用户都可以同时运行自己的事务,从而也需要对并发访问进行控制.Oracle也是用“锁”的机制来防止各个事务之间的相互 ...
- Android中Snackbar的介绍以及使用
Android中Snackbar的介绍以及使用 介绍 Snackbar可以说是Toast的升级版,不仅有显示信息的功能,还可以添加一个Action,实现点击功能,可以右滑删除. 效果图 Snackba ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- [翻译]Mock 在 Python 中的使用介绍
目录 Mock 在 Python 中的使用介绍 原文链接与说明 恐惧系统调用 一个简单的删除函数 使用 Mock 重构 潜在陷阱 向 'rm' 中加入验证 将文件删除作为服务 方法 1:模拟实例的方法 ...
- netcore中的缓存介绍
Cache(缓存)是优化web应用的常用方法,缓存存放在服务端的内存中,被所有用户共享.由于Cache存放在服务器的内存中,所以用户获取缓存资源的速度远比从服务器硬盘中获取快,但是从资源占有的角度考虑 ...
随机推荐
- 如何保证redis中存放的都是热点数据
当redis使用的内存超过了设置的最大内存时,会触发redis的key淘汰机制,在redis 3.0中有6种淘汰策略: noeviction: 不删除策略.当达到最大内存限制时, 如果需要使用更多内存 ...
- Django笔记&教程 6-2 表单(Form)基础操作
Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...
- win10让人愤怒的磁盘占用100%问题
升级win10以后其他还好.但是系统经常响应非常非常慢,后来观察发现每次非常卡的时候我的磁盘占用就是100%的. 我是技嘉的B85主板. 1盘是128g的东芝SSD(GPT), 2盘是WD的3TB H ...
- [bzoj1416]神奇的口袋
容易发现操作任意次并不会改变每一个点的概率(因为每一个点加d的概率相同,期望与原数成比例),然后直接输出即可(要用高精度) 1 #include<bits/stdc++.h> 2 usin ...
- [nowcoder5668I]Sorting the Array
令$f(n,b,m)=a[1..n]$(这里下标从1开始),考虑一些性质: 性质1.对于$\forall 1\le i\le n-m+1$,若$\exists 1\le j<i,a[j]> ...
- [bzoj1178]会议中心
考虑用f[i][j]表示以i为起点(i是时间,所以要离散)选$2^j$条线段(这里不是时间)最小的终点,预处理用倍增的方式来求即可预处理出这个数组后,就可以很快的求出在$[l,r]$的时间内最多能选多 ...
- 为了拿捏 Redis 数据结构,我画了 40 张图(完整版)
大家好,我是小林. Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. ...
- Codeforces 848E - Days of Floral Colours(分治 FFT)
Codeforces 题目传送门 & 洛谷题目传送门 神仙 D1E,一道货真价实的 *3400 %%%%%%%%%%%% 首先注意到一点,由于该图为中心对称图形,\(1\sim n\) 的染色 ...
- P5896 [IOI2016]aliens
*IX. P5896 [IOI2016]aliens DP 优化方法大杂烩,详解 wqs 二分及其注意事项,斜率优化等其它 DP 优化方法. **** 团队赛 T6,没想到是 IOI 原题.当时看出来 ...
- 生成&添加 SSH公钥
生成&添加 SSH公钥 生成 打开 Terminal(终端) 生成命令 ssh-keygen -t ed25519 -C "your_email@example.com" ...