I have
private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
private static final BigDecimal TEN = new BigDecimal(10);
BigDecimal decimal = new BigDecimal(1050);
I need to get 10% I write
BigDecimal decimalResult = decimal.divide(ONE_HUNDRED).multiply(TEN)//100, 10
But Intellij IDE says:
'BigDecimal.divide()' called without a rounding mode argument more...
I added BigDecimal.ROUND_HALF_UP and all others but I get wrong result. I need 1050/100 = 10.5 but if I add BigDecimal.ROUND_HALF_UP result = 11.
How can I correctly divide with scale parameters?
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();
}
This example returns 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);
}
}
You should adjust the scale during the creation of decimal variable.