我最近选择了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;
}
任何提示打印出更多数字的提示/建议都会很棒。提前谢谢。
答案 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是一个浮点数。要进行这样的精确计算,您需要使用十进制数。