10. BigDecimal转int四舍五入的姿势
约 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_UP
和 HALF_DOWN
,其中up表示为5时,向上取整;down表示为5时,向下取整;根据实际需要选择即可
Loading...