10. BigDecimal转int四舍五入的姿势

一灰灰blogJavaJDKJava约 247 字小于 1 分钟

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

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

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

@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());
}

输出结果如下:

4
5
4
4

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

Loading...