java 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格式的变量,我试图用结果相应地向上或向下取整。例如:

16.543242123应为16.5 3.35应该是3.4 6.3456应为6.3

依此类推,如果第三个数字等于或大于5,则将第二个数字四舍五入;如果第三个数字等于或小于4,则删除第三个数字。这并不一定是BigDecimal,我可以在完成四舍五入后计算出转换数字的方法。 提前感谢。

这应该可以做到:

  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);