如何将BigDecimal舍入小于1

时间:2015-08-10 11:28:58

标签: java rounding bigdecimal

我想将十进制数舍入到最接近的自然数。 例如:

public static void main(String[] arguments){
    BigDecimal a=new BigDecimal("2.5");
    BigDecimal b=new BigDecimal("0.5");
    System.out.println(a.round(new MathContext(1,RoundingMode.UP)));
    System.out.println(b.round(new MathContext(1,RoundingMode.UP)));       
    }

预期输出

3
1

实际输出

3
0.5

问题是数字0.5被舍入为0.5而不是1 如何将BigDecimal舍入小于1

5 个答案:

答案 0 :(得分:2)

这会做你想要的......

BigDecimal a=new BigDecimal("2.5");
BigDecimal b=new BigDecimal("0.5");
System.out.println(Math.round(a.doubleValue()));
System.out.println(Math.round(b.doubleValue()));

这将为您输出3 and 1 ...

答案 1 :(得分:1)

类似的东西:

 BigDecimal intvalue= new BigDecimal("0.5");
 intvalue =  intvalue.setScale(0, RoundingMode.HALF_UP);

答案 2 :(得分:1)

BigDecimal b=new BigDecimal("0.5");
b = b.setScale(0,BigDecimal.ROUND_HALF_UP);
System.out.println(b.round(MathContext.DECIMAL32));  

答案 3 :(得分:1)

您可以使用以下代码将BigDecimal舍入小于1。

    BigDecimal a = new BigDecimal("2.5");
    BigDecimal b = new BigDecimal("0.5");

    System.out.println(a.setScale(0, RoundingMode.UP));
    System.out.println(b.setScale(0, RoundingMode.UP));

答案 4 :(得分:0)

System.out.println(Math.round(b.doubleValue()));