java BigDecimal自动向上/向下舍入
我有一个计算数据的函数,它创建了一个BigDecimal格式的变量,我试图用结果相应地向上或向下取整。例如: 16.543242123应为16.5 3.35应该是3.4 6.3456应为6.3 依此类推,如果第三个数字等于或大于5,则将第二个数字四舍五入;如果第三个数字等于或小于4,则删除第三个数字。这并不一定是BigDecimal,我可以在完成四舍五入后计算出转换数字的方法。 提前感谢。这应该可以做到:java BigDecimal自动向上/向下舍入,java,rounding,Java,Rounding,我有一个计算数据的函数,它创建了一个BigDecimal格式的变量,我试图用结果相应地向上或向下取整。例如: 16.543242123应为16.5 3.35应该是3.4 6.3456应为6.3 依此类推,如果第三个数字等于或大于5,则将第二个数字四舍五入;如果第三个数字等于或小于4,则删除第三个数字。这并不一定是BigDecimal,我可以在完成四舍五入后计算出转换数字的方法。 提前感谢。这应该可以做到: BigDecimal bg1 = new BigDecimal(16.54324212
BigDecimal bg1 = new BigDecimal(16.543242123);
bg1 = bg1.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg1.toString()); //16.5
BigDecimal bg2 = new BigDecimal(3.35);
bg2 = bg2.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg2.toString()); //3.4
BigDecimal bg3 = new BigDecimal(6.3456);
bg3 = bg3.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg3.toString()); //6.3
这可能会有帮助
BigDecimal bd = new BigDecimal("16.553242123");
BigDecimal format = bd.setScale(1, RoundingMode.HALF_UP);