C++ установить точность вычислений для double

171
15 января 2019, 15:30

имеется данный код, но он выводит не ожидаемый результат. как это исправить?

double s = 0.0;
for (int i = 1; i < 100; i++) {
    s +=  1.00000 / i;
    cout << s << "\n";
    //printf("%.5d\n", s);
}

Answer 1

Приведённый код считает сумму гармонического ряда, а она является расходящейся, т.е. не стремится ни к какому пределу, а постоянно увеличивается.

Поэтому не стоит ожидать, что значение s сойдётся к 1 (это просто невозможно, т.к. сумма уже двух членов равна 1.5 и далее к ней добавляются положительные значения).

READ ALSO
бесконечный цикл (scanf), не понимаю почему

бесконечный цикл (scanf), не понимаю почему

Как-то по-уродски код вставился

199
Как вывести большие(очень большие) числа?

Как вывести большие(очень большие) числа?

Мне нужно умножать очень большие числа, сделал это через алгоритм Карацубы, но переменные просто не могут их вместить в себяКак можно преодолеть...

184
Вывод массива в C++ (При сравнении массивов)

Вывод массива в C++ (При сравнении массивов)

Задается 2 массива a и b, нужно вывести массив имеющий наименьшее кол-во положительных элементовПример: Массив a { 1, 2,3}, массив b { -4, -5, 6} программа...

158
C++ Windows API цикл обработки сообщений

C++ Windows API цикл обработки сообщений

Есть Windows API окно обернутое в класСоздается в Windows API main методе например так:

158