математика — Почему моя программа на C ++ не вычисляет больше цифр ‘e’?

Недавно я выбрал язык программирования c ++ и пытаюсь вычислить цифры «e» для проекта «Calculus Project» в школе. Я вставлю pgoram, который я написал ниже. Он основан на е = lim (1 + 1 / x) ^ x, как x-> бесконечность. В этой программе я установил х = 100000. Я также установил x = 1 000 000 и заметил, что ответы как-то подвергаются ошибке округления, а не становятся длиннее.

Программа:

#include <iostream>
#include <math.h>
using namespace std;

long double sum;

int main()
{

long double x=100000;
sum= (pow((1+(1/x)),(x)));
cout<<sum;

}

Любые советы / рекомендации по распечатке большего количества цифр были бы отличными. Заранее спасибо.

1

Решение

С одной стороны, long double ограничен числом цифр, которые он может произвести, и из-за того, как реализованы действительные числа, он не даст точных результатов.

Но, чтобы ответить на ваш вопрос, вы можете установить точность cout, выполнив

cout.precision(15);
cout << sum;

Также смотрите этот ответ для более подробных объяснений и подробностей см.
Как вывести двойное значение с полной точностью, используя cout?

2

Другие решения

Double в c ++ — это число с плавающей запятой. Для точного расчета, как это вам нужно использовать десятичное число.

Увидеть этот ответ о десятичной в CPP

-2