Учитывая следующий код, я надеялся использовать бесконечную сумму для вычисления e в очень высоком десятичном разряде, но я не уверен, как это сделать в C++, я использовал длинный двойной двойной в надежде, что он сработает, но он Кажется, никто не знает, как это сделать?C++ получение E от высокой точности двойной?
1 #ifndef E_H
2 #define E_H
3
4 long int factorial(int a){
5 if(a == 0){
6 return 1;
7 }
8 return a * factorial(a-1);
9 }
10
11 long long double getE(){
12 long long double e;
13 for(int i = 0; i < 100; i++){
14 e += 1/(double)factorial(i);
15 }
16 return e;
17 }
18
19 #endif
В каком качестве это не работает? – nhgrif
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758253110021091686400000000000000000000000000, и это не соответствует ни одному встроенному типу данных C++ без усечения. Вы должны уметь вычислять e до 17 мест (максимальная точность, предлагаемая 'double') с гораздо меньшим факториалом. –
Хмм, поэтому факториальное выражение не является хорошим способом сделать это, а? –