1

我最近学习了 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;

 }

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

4

2 回答 2

2

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

但是,要回答您的问题,您可以通过执行设置 cout 的精度

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

另请参阅此答案以获取更多解释和详细信息,请参阅 如何使用 cout 以全精度打印双精度值?

于 2013-05-19T23:16:41.000 回答
-2

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

请参阅有关 cpp 中小数的此答案

于 2013-05-19T23:18:55.597 回答