BigDecimal 除以比例

use*_*472 8 java bigdecimal

我有

private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
    private static final BigDecimal TEN = new BigDecimal(10);
Run Code Online (Sandbox Code Playgroud)

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_UPresult = 11

如何正确划分比例参数?

小智 11

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();
}
Run Code Online (Sandbox Code Playgroud)


fre*_*dev 2

这个例子返回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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 您知道,十已经作为常量存在于“BigDecimal”类中。 (3认同)