Comment calculer la constante d'Euler ou Euler alimenté en C++?
Je suis en train d'essayer de trouver le plus de "naturel" façon d'utiliser le numéro e en C/C++. Je suis concentré sur le calcul de la fonction e^n.
Je pense que "cmath", par défaut, ne fournit pas de support pour les deux (fonction et constante). Cependant, il peut être activé pour inclure des constantes définies par le compilateur, dans ce cas, M_E
. Cela peut être fait, y compris la déclaration #define _USE_MATH_DEFINES
.
D'autre part, e peut être défini comme une constante:
#define E 2.71828182845904523536;
ou
const double EULER = 2.71828182845904523536;
Dit cela. Lequel est le plus "standard" approche de cette constante mathématique? Est-ce un autre bibliothèque?
dans calculcating e^n, est
n
un entier, réel ou complexe? Seulement si c'est un entier, sera std::pow(Euler,n)
éventuellement être plus efficace que de simplement std::exp(n)
.OriginalL'auteur Tony | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez l'éviter en utilisant un symbole de préprocesseur vous devriez. Il va vous causer des problèmes lorsque vous y attendez le moins.
E
est probable va être une variable.Solution proposée:
L'avantage de calculer la constante au lieu d'attribuer à virgule flottante littéral, c'est qu'il va produire un résultat avec une précision qui correspond à la précision de la
double
type de données pour votre implémentation C++. Et il supprime la possibilité d'introduire une erreur par inadvertance en sautant d'un chiffre.Comme illustré ci-dessus,
<cmath>
déclarestd::exp
, donc il n'est pas nécessaire pour vous de rouler votre propre.Il convient également de noter que
std::exp
prend un argument du pouvoir, donc si vous êtes à la recherche pour calculere^n
, le stockage de la constante est superflue, puisque vous pouvez l'écrire commestd::exp(n)
.OriginalL'auteur IInspectable