2013-11-01 907 views
0

我有一个函数可以计算创建一个BigDecimal格式变量的数据,并且我试图根据结果向上或向下取整。例如:java BigDecimal自动向上/向下取整

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

等,如果第三位等于5或以上围捕第二位,如果其等于4及以下,删除第三位。这并不是绝对需要BigDecimal,我可以计算出我在设法完成整数后转换数字。 在此先感谢。

+0

这可能有助于http://stackoverflow.com/questions/10883308/how-to-handle-rounding-errors-in-javas-bigdecimal/10883502 #10883502 – Kennet

回答

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

非常感谢,它工作:) – Phil

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