【发布时间】:2013-12-28 20:38:18
【问题描述】:
鉴于以下代码,我希望使用无限和来将 e 计算到非常高的小数位,但我不确定如何在 c++ 中执行此操作,我使用 long long double 希望它可以工作,但是好像没有,有人知道怎么做吗?
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
【问题讨论】:
-
在什么情况下不工作?
-
100!而且,它不适应在任何C ++内置数据类型没有截断的任何C ++内置数据类型中。您应该能够使用更小的阶乘将 e 计算到 17 位(
double提供的最大精度)。 -
嗯,所以阶乘求和不是一个好方法,嗯?
标签: c++ types double precision