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(注意不包含等于)例:
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策略。
原文作者:weixin_48470176
原文地址: https://blog.csdn.net/weixin_48470176/article/details/107932092
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_48470176/article/details/107932092
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章