190605-记录BigDecimal转int四舍五入的姿势

文章目录
  1. II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注

从db中查了一个BigDecimal数据,希望按照四舍五入的方式进行取整,发现直接使用 intValue 不太对,特此记录一下正确姿势

1
new BigDecimal(4.51).setScale(0, RoundingMode.HALF_EVEN).intValue()

如果我们直接使用 intValue,会发现输出结果是直接将小数后面的扔掉了;所以这个时候需要先设置精度,然后再取整,测试如下

1
2
3
4
5
6
7
8
@Test
public void testBigDecimal() {
System.out.println(new BigDecimal(4.51).intValue());

System.out.println(new BigDecimal(4.51).setScale(0, RoundingMode.HALF_EVEN).intValue());
System.out.println(new BigDecimal(4.5).setScale(0, RoundingMode.HALF_EVEN).intValue());
System.out.println(new BigDecimal(4.49).setScale(0, RoundingMode.HALF_EVEN).intValue());
}

输出结果如下:

1
2
3
4
4
5
4
4

在上面的使用中,我们使用的RoundingMode.HALF_EVEN这种取整模式,当然常见的四舍五入还有 HALF_UPHALF_DOWN,其中up表示为5时,向上取整;down表示为5时,向下取整;根据实际需要选择即可

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

知识星球

goals

# Java

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×