如何舍入小于 1 的 BigDecimal

How to round BigDecimal smaller than 1

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

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 如何舍入小于 1 的 BigDecimal

这会做你想做的...

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 ...

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

类似于:

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

您可以使用以下代码将 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));