为什么我的C ++程序不计算'e'的更多数字?

时间:2013-05-19 23:11:17

标签: c++ math constants calculus

我最近选择了c ++编程语言,并且我正在尝试计算学校微积分项目的'e'数字。我会粘贴下面写的pgoram。它基于e = lim(1 + 1 / x)^ x,因为x->无穷。在这个程序中,我设置x = 100,000。我还设置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;

 }

任何提示打印出更多数字的提示/建议都会很棒。提前谢谢。

2 个答案:

答案 0 :(得分:2)

第一方面,long double在它可以产生的位数上受到限制,并且由于实数的实现方式,它不会产生精确的结果。

但是,要回答你的问题,你可以通过

设置cout的精确度
cout.precision(15);
cout << sum;

另请参阅此答案以获取更多解释和详细信息 How do I print a double value with full precision using cout?

答案 1 :(得分:-2)

c ++中的Double是一个浮点数。要进行这样的精确计算,您需要使用十进制数。

请参阅this answer about decimal in cpp