Skip to content

Files

Latest commit

author
guoshihua
Aug 16, 2019
afa370e · Aug 16, 2019

History

History

JavaBigdecimalRound

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 16, 2019
Aug 16, 2019
Aug 16, 2019
Aug 16, 2019

Bigdecimal 八种舍入模式代码演示

运行

双击run.bat或者run.sh

输出结果

--------------------ROUND_UP 模式-------------------- 原始值[12.12],舍入后的值[12.12],值变化= 原始值[12.16],舍入后的值[12.17],值变化↑ 原始值[12.122],舍入后的值[12.13],值变化↑ 原始值[12.126],舍入后的值[12.13],值变化↑ 原始值[-12.12],舍入后的值[-12.12],值变化= 原始值[-12.16],舍入后的值[-12.17],值变化↓ 原始值[-12.122],舍入后的值[-12.13],值变化↓ 原始值[-12.126],舍入后的值[-12.13],值变化↓ --------------------ROUND_UP 模式--------------------

--------------------ROUND_DOWN 模式-------------------- 原始值[12.12],舍入后的值[12.11],值变化↓ 原始值[12.16],舍入后的值[12.16],值变化= 原始值[12.122],舍入后的值[12.12],值变化↓ 原始值[12.126],舍入后的值[12.12],值变化↓ 原始值[-12.12],舍入后的值[-12.11],值变化↑ 原始值[-12.16],舍入后的值[-12.16],值变化= 原始值[-12.122],舍入后的值[-12.12],值变化↑ 原始值[-12.126],舍入后的值[-12.12],值变化↑ --------------------ROUND_DOWN 模式--------------------

--------------------ROUND_CEILING 模式-------------------- 原始值[12.12],舍入后的值[12.12],值变化= 原始值[12.16],舍入后的值[12.17],值变化↑ 原始值[12.122],舍入后的值[12.13],值变化↑ 原始值[12.126],舍入后的值[12.13],值变化↑ 原始值[-12.12],舍入后的值[-12.11],值变化↑ 原始值[-12.16],舍入后的值[-12.16],值变化= 原始值[-12.122],舍入后的值[-12.12],值变化↑ 原始值[-12.126],舍入后的值[-12.12],值变化↑ --------------------ROUND_CEILING 模式--------------------

--------------------ROUND_FLOOR 模式-------------------- 原始值[12.12],舍入后的值[12.11],值变化↓ 原始值[12.16],舍入后的值[12.16],值变化= 原始值[12.122],舍入后的值[12.12],值变化↓ 原始值[12.126],舍入后的值[12.12],值变化↓ 原始值[-12.12],舍入后的值[-12.12],值变化= 原始值[-12.16],舍入后的值[-12.17],值变化↓ 原始值[-12.122],舍入后的值[-12.13],值变化↓ 原始值[-12.126],舍入后的值[-12.13],值变化↓ --------------------ROUND_FLOOR 模式--------------------

--------------------ROUND_HALF_UP 模式-------------------- 原始值[12.12],舍入后的值[12.12],值变化= 原始值[12.16],舍入后的值[12.16],值变化= 原始值[12.122],舍入后的值[12.12],值变化↓ 原始值[12.126],舍入后的值[12.13],值变化↑ 原始值[-12.12],舍入后的值[-12.12],值变化= 原始值[-12.16],舍入后的值[-12.16],值变化= 原始值[-12.122],舍入后的值[-12.12],值变化↑ 原始值[-12.126],舍入后的值[-12.13],值变化↓ --------------------ROUND_HALF_UP 模式--------------------

--------------------ROUND_HALF_DOWN 模式-------------------- 原始值[12.12],舍入后的值[12.12],值变化= 原始值[12.16],舍入后的值[12.16],值变化= 原始值[12.122],舍入后的值[12.12],值变化↓ 原始值[12.126],舍入后的值[12.13],值变化↑ 原始值[-12.12],舍入后的值[-12.12],值变化= 原始值[-12.16],舍入后的值[-12.16],值变化= 原始值[-12.122],舍入后的值[-12.12],值变化↑ 原始值[-12.126],舍入后的值[-12.13],值变化↓ --------------------ROUND_HALF_DOWN 模式--------------------

--------------------ROUND_HALF_EVEN 模式-------------------- 原始值[12.12],舍入后的值[12.12],值变化= 原始值[12.16],舍入后的值[12.16],值变化= 原始值[12.122],舍入后的值[12.12],值变化↓ 原始值[12.126],舍入后的值[12.13],值变化↑ 原始值[-12.12],舍入后的值[-12.12],值变化= 原始值[-12.16],舍入后的值[-12.16],值变化= 原始值[-12.122],舍入后的值[-12.12],值变化↑ 原始值[-12.126],舍入后的值[-12.13],值变化↓ --------------------ROUND_HALF_EVEN 模式--------------------

8中舍入模式说明

1、ROUND_UP

舍入远离零的舍入模式。 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。 注意,此舍入模式始终不会减少计算值的大小。 1.105 = 1.11

2、ROUND_DOWN

接近零的舍入模式。 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。 注意,此舍入模式始终不会增加计算值的大小。 1.105 = 1.10

3、ROUND_CEILING

接近正无穷大的舍入模式。 如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同; 如果为负,则舍入行为与 ROUND_DOWN 相同。 注意,此舍入模式始终不会减少计算值。

4、ROUND_FLOOR

接近负无穷大的舍入模式。 如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同; 如果为负,则舍入行为与 ROUND_UP 相同。 注意,此舍入模式始终不会增加计算值。

5、ROUND_HALF_UP

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。 如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。 注意,这是我们大多数人在小学时就学过的舍入模式(四舍五入)。

6、ROUND_HALF_DOWN

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。 如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同(五舍六入)。

7、ROUND_HALF_EVEN

向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同; 如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。 注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。 此舍入模式也称为“银行家舍入法”,主要在美国使用。 四舍六入,五分两种情况。 如果前一位为奇数,则入位,否则舍去。 以下例子为保留小数点1位,那么这种舍入方式下的结果。 1.15 = 1.2, 1.25 = 1.2

8、ROUND_UNNECESSARY

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

来源:https://www.jianshu.com/p/b2084b2b2dce