码迷,mamicode.com
首页 > 其他好文 > 详细

BigDecimal的舍入模式

时间:2019-02-18 01:04:33      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:一个   请求   bsp   无限   val   精度   距离   lin   四舍五入   

为可能丢弃精度的数值操作指定一种舍入行为。每种舍入模式都指示如何计算返回舍入结果位数的最低有效位。如果返回的位数比表示精确数值结果所需的位数少,则舍弃的位数称为舍弃部分,而不管这些位数对数值的作用如何。换句话说,假设是一个数值,舍弃部分的绝对值可能大于 1。

 

BigDecimal

RoundingMode

说明

ROUND_CEILING

CEILING

2

向正无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 RoundingMode.UP;如果结果为负,则舍入行为类似于 RoundingMode.DOWN。注意,此舍入模式始终不会减少计算值。

ROUND_DOWN

DOWN

1

向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾)。注意,此舍入模式始终不会增加计算值的绝对值。

ROUND_FLOOR

FLOOR

3

向负无限大方向舍入的舍入模式。如果结果为正,则舍入行为类似于 RoundingMode.DOWN;如果结果为负,则舍入行为类似于 RoundingMode.UP。注意,此舍入模式始终不会增加计算值。

ROUND_HALF_DOWN

HALF_DOWN

5

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。如果被舍弃部分 > 0.5,则舍入行为同 RoundingMode.UP;否则舍入行为同 RoundingMode.DOWN。

ROUND_HALF_EVEN

HALF_EVEN

6

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

ROUND_HALF_UP

HALF_UP

4

向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。如果被舍弃部分 >= 0.5,则舍入行为同 RoundingMode.UP;否则舍入行为同 RoundingMode.DOWN。注意,此舍入模式就是通常学校里讲的四舍五入。

ROUND_UNNECESSARY

UNNECESSARY

7

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

ROUND_UP

UP

0

远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1。注意,此舍入模式始终不会减少计算值的绝对值。

 

 

不同舍入模式下的舍入操作汇总

根据给定的舍入模式将输入数字舍入为一位数的结果

输入

数字

UP

DOWN

CEILING

FLOOR

HALF_UP

HALF_DOWN

HALF_EVEN

UNNECESSARY

5.5

6

5

6

5

6

5

6

抛出 ArithmeticException

2.5

3

2

3

2

3

2

2

抛出 ArithmeticException

1.6

2

1

2

1

2

2

2

抛出 ArithmeticException

1.1

2

1

2

1

1

1

1

抛出 ArithmeticException

1.0

1

1

1

1

1

1

1

1

-1.0

-1

-1

-1

-1

-1

-1

-1

-1

-1.1

-2

-1

-1

-2

-1

-1

-1

抛出 ArithmeticException

-1.6

-2

-1

-1

-2

-2

-2

-2

抛出 ArithmeticException

-2.5

-3

-2

-2

-3

-3

-2

-2

抛出 ArithmeticException

-5.5

-6

-5

-5

-6

-6

-5

-6

抛出 ArithmeticException

BigDecimal的舍入模式

标签:一个   请求   bsp   无限   val   精度   距离   lin   四舍五入   

原文地址:https://www.cnblogs.com/bd-Luming/p/10393537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!