java.math.RoundingMode 参数详解

java | 2019-09-13 10:02:39

java.math.RoundingMode:这是一种枚举类型,它定义了8种数据的舍入模式。它与java.math.BigDecimal类中定义的8个同名静态常量的作用相同,可用BigDecimal.setScale(int newScale, RoundingMode roundingMode)来设置数据的精度和舍入模式。

        

1、ROUND_UP:向远离零的方向舍入。


        若舍入位为非零,则对舍入部分的前一位数字加1;若舍入位为零,则直接舍弃。即为向外取整模式。


2、ROUND_DOWN:向接近零的方向舍入。


        不论舍入位是否为零,都直接舍弃。即为向内取整模式。


3、ROUND_CEILING:向正无穷大的方向舍入。


        若 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;若为负,则舍入行为与 ROUND_DOWN 相同。即为向上取整模式。


4、ROUND_FLOOR:向负无穷大的方向舍入。


        若 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;若为负,则舍入行为与 ROUND_UP 相同。即为向下取整模式。


5、ROUND_HALF_UP:向“最接近的”整数舍入。


        若舍入位大于等于5,则对舍入部分的前一位数字加1;若舍入位小于5,则直接舍弃。即为四舍五入模式。


6、ROUND_HALF_DOWN:向“最接近的”整数舍入。


        若舍入位大于5,则对舍入部分的前一位数字加1;若舍入位小于等于5,则直接舍弃。即为五舍六入模式。


7、ROUND_HALF_EVEN:向“最接近的”整数舍入。


        若(舍入位大于5)或者(舍入位等于5且前一位为奇数),则对舍入部分的前一位数字加1;


        若(舍入位小于5)或者(舍入位等于5且前一位为偶数),则直接舍弃。即为银行家舍入模式。


8、ROUND_UNNECESSARY


        断言请求的操作具有精确的结果,因此不需要舍入。


        如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。


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


1.png

登录后即可回复 登录 | 注册
    
关注编程学问公众号