Я пытаюсь сделать программу для приближения е суммированием следующий номер серии:Расчет количества Eulers с помощью BigDecimal
е = 1 + (! 1/1) + (! 1/2) + (1/! 3) .... + (1/я)
в настоящее время мой код выглядит следующим образом:
public static void main(String[] args) {
BigDecimal one = new BigDecimal(1);
BigDecimal e = new BigDecimal(1.0);
BigDecimal divisor = new BigDecimal(1.0);
for (int i = 1; i <= 12; i++) {
divisor = divisor.multiply(new BigDecimal(i));
e = e.add(one.divide(divisor));
System.out.println("e = " + e);
}
}
программа выполняет расчет (1/п) при п успешно < = 2 , но как только n> = 3, я получаю сообщение об ошибке. Похоже, что программа не может обрабатывать делитель больше, чем 2. Выход программы:
е = 2
е = 2,5
Исключение в потоке «основной» java.lang .ArithmeticException: Неограничивающее десятичное расширение; нет точного представимого десятичного результата. в java.math.BigDecimal.divide (Unknown Source) в ch10.Chapter_10_E20_ApproximateE.main (Chapter_10_E20_ApproximateE.java:16)
Как следует использовать класс BigDecimal преформ суммирование при е = 1 + (1/1 !) + (1/2!) + (1/3!) .... + (1/i!)?
Фактически, деление обычно принимает точность (общее количество представленных цифр). –