JAVA中BigDecimal的小数位取整策略(Rounding mode)保留小数你真的懂吗

ROUND_DOWN 

直接舍去后面的小数

例如:new BigDecimal("1.12087").setScale(3,BigDecimal.ROUND_DOWN); -> 1.120

ROUND_UP 

直接舍去后面的小数位,同时保留小数位的最后一位+1)

例:new BigDecimal("1.12087").setScale(3,BigDecimal.ROUND_UP); -> 1.121

ROUND_HALF_UP

 常说的四舍五入,当舍弃部分大于等于>=0.5时进一位,否则舍弃

ROUND_HALF_DOWN  

四舍五入,与ROUND_HALF_DOWN的唯一区别是 >0.5(注意不包含等于)例:

扫描二维码关注公众号,回复: 12421623 查看本文章

new BigDecimal("0.1250").setScale(2,BigDecimal.ROUND_HALF_DOWN);  ->0.12

new BigDecimal("0.1251").setScale(2,BigDecimal.ROUND_HALF_DOWN);  ->0.13

ROUDN_HALF_EVEN

如果舍弃部分的左边是奇数,按照ROUND_HALF_UP策略;如果舍弃部分的左边是偶数,按照ROUND_HALF_DOWN策略。(较少使用,不举例了)

ROUND_UNNECESSARY 

当小数的真实位数与指定的位数不相同时将抛出异常,既要求精确计算,不能做取舍。(几乎使用不到)

ROUND_CEILING

当是正数时,采用ROUND_UP策略;当是负数时,采用ROUND_DOWN策略

ROUND_FLOOR

与ROUND_CEILING相反,当是正数时采用ROUND_DOWN;当是负数时采用ROUND_UP策略。

猜你喜欢

转载自blog.csdn.net/weixin_48470176/article/details/107932092