Question

Pourquoi la sortie du? DResult invalide
Env: Visual Studio 2008

int _tmain(int argc, _TCHAR* argv[])  
{  
   double dN = - 0.091023604111478473 ;  
   double dD = 0.127777777777777;  
   double dResult =  pow( dN,dD );   
   //dResult = -1.#IND000000000000  
   return 0;  
}   
Était-ce utile?

La solution

Voir http://www.cplusplus.com/reference/clibrary/cmath/ pow /

double pow (double base, double exponent );

« Si la base est négative et exposant n'est pas une valeur intégrale, ou si la base est égale à zéro et exposant est négatif, une erreur de domaine se produit, le réglage de la variable globale errno à la valeur EDOM. »

Autres conseils

Si votre valeur dD était .25 au lieu de la fraction que vous avez présenté, vous pouvez alors voir qu'il prend vraiment la quatrième racine au lieu d'une exponentielle d'un nombre négatif. Votre fraction est proche de la huitième racine. Vous avez besoin des nombres complexes pour exprimer la réponse que la fonction doit donner.

C'est le résultat attendu parce que dN est négatif. Le résultat de pow (dN, dd); est uniquement défini si soit dN est positive ou si dD est un nombre entier. Dans le cas contraire, le résultat est un nombre complexe. Par exemple, pow (-1., 0,5) ne fonctionnera pas non plus.

Eh bien, 0,127777777 est ce numéro? sa smt comme 1277777777 / (10 .... 0)

1277777777777 n'est pas un nombre pair, donc -smt à la puissance de 12.777.777.777 est un nombre négatif, et 10 ... 0e racine de ce n'est pas un nombre réel.

Je reffering à un fait qui a ^ (b / c) = (c-ième racine de) (a ^ b)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top