java BigDecimal自动向上/向下舍入

时间:2013-11-01 13:40:55

标签: java rounding

我有一个函数来计算创建BigDecimal格式变量的数据,并尝试相应地向上或向下舍入结果。例如:

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

依此类推,若第3位数等于5或以上,则将第2位数向上舍入,如果等于4及以下,则删除第3位数。这并不一定是BigDecimal,我可以想出在我设法完成之后转换数字。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

这应该这样做:

  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

答案 1 :(得分:0)

BigDecimal bd = new BigDecimal("16.553242123");
BigDecimal format = bd.setScale(1, RoundingMode.HALF_UP);