Я настоятельно советую вам добавить немного точности в ваши BigDecimal
-разделения.В противном случае вы можете получить ArithmeticException
о том, что точная точность не указана.
Сделайте что-то подобное
public static double calculateMonthlyInterest(BigDecimal balance, BigDecimal rate,
BigDecimal hundred, BigDecimal month) {
return balance.multiply(rate)
.divide(hundred, 2, BigDecimal.ROUND_HALF_UP)
.divide(month, 2, BigDecimal.ROUND_HALF_UP)
.doubleValue();
}
Или вот это (если вы хотите указать double
параметры):
public static double calculateMonthlyInterest(double balance, double rate,
double hundred, double month) {
BigDecimal b = new BigDecimal(balance);
BigDecimal r = new BigDecimal(rate);
BigDecimal h = new BigDecimal(hundred);
BigDecimal m = new BigDecimal(month);
return b.multiply(r)
.divide(h, 2, BigDecimal.ROUND_HALF_UP)
.divide(m, 2, BigDecimal.ROUND_HALF_UP)
.doubleValue();
}
Таким образом, код остается читабельным, но это приводит к определенной цене: есть больше строк кода!