BigDecimal与规模划分

时间:2017-04-03 11:16:46

标签: java bigdecimal

我有

private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
    private static final BigDecimal TEN = new BigDecimal(10);

BigDecimal decimal = new BigDecimal(1050); 我需要写10%才能写 BigDecimal decimalResult = decimal.divide(ONE_HUNDRED).multiply(TEN)//100, 10

但是Intellij IDE说:

  

'没有舍入模式参数的'BigDecimal.divide()'被调用...

我添加了BigDecimal.ROUND_HALF_UP和其他所有人,但结果错了。我需要1050/100 = 10.5,但如果我添加BigDecimal.ROUND_HALF_UP结果= 11

如何正确划分比例参数?

2 个答案:

答案 0 :(得分:0)

此示例返回105.0000

public class TestBigDecimal {
  static BigDecimal decimal = new BigDecimal(1050).setScale(4, BigDecimal.ROUND_HALF_UP);
  static BigDecimal ONE_HUNDRED = new BigDecimal(100);
  static BigDecimal TEN = new BigDecimal(10);

  public static void main(String[] args)
  {
    BigDecimal decimalResult = decimal.divide(ONE_HUNDRED).multiply(TEN) ;
    System.out.println(decimalResult);
  }
}

您应该在创建decimal变量时调整比例。

答案 1 :(得分:0)

public static double divide(double d1, double d2) {
    BigDecimal b1 = new BigDecimal(d1);
    BigDecimal b2 = new BigDecimal(d2);
    return b1.divide(b2, 2, RoundingMode.DOWN).doubleValue();
}