Frage

Warum ist der Ausgang des dResult ungültig?
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;  
}   
War es hilfreich?

Lösung

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

double pow (double base, double exponent );

„Wenn Basis negativ und Exponent ist kein integraler Wert, oder wenn die Basis Null ist und Exponent negativ ist, ein Domain-Fehler auftritt, die globale Variable errno auf den Wert EDOM Einstellung.“

Andere Tipps

Wenn Ihr dD Wert war 0,25 anstelle der Fraktion Ihnen präsentiert haben, dann können Sie sehen, dass es wirklich die vierte Wurzel anstelle eines exponentiellen einer negativen Zahl. Ihr Anteil liegt in der Nähe der achten Wurzel. Sie müssen komplexe Zahlen, die Antwort zum Ausdruck bringen, dass Funktion geben soll.

Das ist das erwartete Ergebnis, da dN negativ ist. Das Ergebnis der pow (dN, dd); definiert ist, nur dann, wenn entweder dN positiv ist oder wenn dD eine ganze Zahl ist. Andernfalls ist das Ergebnis eine komplexe Zahl. Zum Beispiel pow (-1., 0,5) wird nicht funktionieren.

Nun, 0,127777777 ist, was Zahl? seine smt wie 1277777777 / (10 .... 0)

1277777777777 ist nicht eine gerade Zahl, deshalb -smt die Macht der 12777777777 ist eine negative Zahl, und 10 ... 0. Wurzel aus, dass nicht eine reelle Zahl.

ich auf eine Tatsache, dass ein reffering ^ (b / c) = (c-te Wurzel von) (a ^ b)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top