首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算欧拉常数或欧拉驱动的C++?

如何计算欧拉常数或欧拉驱动的C++?
EN

Stack Overflow用户
提问于 2013-09-12 20:02:33
回答 3查看 37.7K关注 0票数 18

在C/C++中,我试图找到更自然的方法来使用数字e。我专注于计算函数e^n。

我认为默认情况下,'cmath‘不支持两者(函数和常量)。但是,可以启用它来包含编译器定义的常量,在本例中是M_E。这可以通过包含语句#define _USE_MATH_DEFINES来完成。

另一方面,e可以定义为常数:

代码语言:javascript
复制
#define E 2.71828182845904523536;

代码语言:javascript
复制
const double EULER = 2.71828182845904523536;

这么说的。哪一种是最“标准”的方式来接近这个数学常数?还有其他图书馆吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-12 20:10:39

如果您可以避免使用预处理器符号,则应该使用。它会在你最不经意的时候给你带来麻烦。E很可能是一个变量。

建议的解决方案:

代码语言:javascript
复制
#include <cmath>
const double EulerConstant = std::exp(1.0);

计算常量而不是赋值浮点文字的优点是,它将产生一个精度与特定double实现的C++数据类型的精度相匹配的结果。它不小心跳过一个数字,从而消除了引入错误的可能性。

如上面所示,<cmath>确实声明了std::exp,所以不需要自己的。

票数 24
EN

Stack Overflow用户

发布于 2019-07-31 07:33:36

std::numbers::e C++20

C++20还向标准库添加了一个e常量:http://eel.is/c++draft/numbers

我希望这样的用法是:

代码语言:javascript
复制
#include <math>
#include <iostream>

int main() {
    std::cout << std::numbers::e << std::endl;
}

当GCC得到支持时,我会试一试,加上g++-9 -std=c++2a的GCC 9.1.0仍然不支持它。

已接受的提案说明:

5.0.“header”标题在表tab:cpp.library.headers中,需要添加一个新的标头。 ..。 命名空间std {命名空间数学{模板内联常数T e_v =未指定;

当然还有一个std::numbers::pi :-) How to use the PI constant in C++

这些常量使用C++14变量模板特性:C++14 Variable Templates: what is their purpose? Any usage example?

在草案的早期版本中,常量位于std::math::ehttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r7.pdf下面。

票数 6
EN

Stack Overflow用户

发布于 2021-05-26 02:08:08

我也正面临着这个学校的问题,并且计算出了没有数学计算的欧拉数。因此,我们需要计算1+ 1/1!+ 1/2!+.+ 1/n!

我使用递归函数来实现这样的功能(主要是为了测试我的解决方案e):

代码语言:javascript
复制
#include <iostream>
#include <iomanip>
using namespace std;

double Factorial(int n){    // Max n = 170
    if(n==1) return 1;
    else return n * Factorial(n-1);
}

double GetEuler(int n){
    if(n == 0) return 1;
    else return (1/Factorial(n) + GetEuler(n-1));
}

int main(){
    int n;
    double e;

    e = GetEuler(170);
    cout << setprecision(15) << e << endl;

    return 0;
}

产出: 2.71828182845905

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18773343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档