Данный код находит e^x по формуле e^x = 1 + x + (x^2) / 2! + (x^3) / 3! и выполняется до того, пока слагаемое не станет меньше 10^(-6):
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
//Функция нахождения факториал
double fl(int num) {
int fl = 1;
while (num) {
fl *= num;
num --;
}
return fl;
}
int main()
{
setlocale(LC_CTYPE, "rus");
double x, e, a = 1;
int st = 2;
cout << "input: ";
cin >> x;
e = 1 + x;
while (a >= 10e-6)
{
a = pow(x, st) / fl(st);
e += a;
st++;
}
cout << "e^x: " << e;
system("pause>nul");
return 0;
}
На вывод при x = 2.1 выводит верный ответ, но при x > 2.1, откуда появляется отрицательное число. В чем может быть проблема?