Данный код находит 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, откуда появляется отрицательное число. В чем может быть проблема?