@Misha2310

Почему неправильно работает цикл: после нормального вывода выводится бесконечность, а потом NaN?

Есть числовая последовательность 636cc122cb796649589363.jpeg
Нужно получить сумму A1+A2+A3+...An, когда n - минимальное целое число больше 10, если |An|<10^-4. X сами задаём, но от -2 до 2.

import static java.lang.Math.*;
public class Main {
    public static void main(String[] args) {
        double sum = 0, x = 1.5, x1 = 1, x2 = 1;
        int i = 11;
        for(int n = 0; n<11;n++) { // подносим x до 11 степени и считаем сумму до n = 11
            x1 = x1 * x;
            x2 = x2 * x * x;
            sum += x2 * cos(x1) / i * i;
        }
        do{
            x1=x1*x; // подносим на степень выше
            x2=x2*x*x;
            i++;
            sum += x2*cos(x1)/i*i;
            System.out.println(sum);
        }while(abs(x2*cos(x1)/i*i)>=pow(10, -4));
}}


вывод: 636cc23166d22879406730.jpeg
можете пожалуйста хотя бы объяснить почему выводится бесконечность, а потом NaN, вроде бы должно же нормально считаться? Буду очень благодарен!
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 2
xez
@xez Куратор тега Java
TL Junior Roo
Попробуйте использовать BigDecimal вместо double
Ответ написан
Jacen11
@Jacen11
double нельзя использовать в математических расчетах, там и ограничения и погрешности, BigDecimal для этого используют обычно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы