Domanda

Perché è l'uscita del dResult invalido?
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;  
}   
È stato utile?

Soluzione

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

double pow (double base, double exponent );

"Se la base è negativo e esponente non è un valore integrale, o se la base è zero e esponente è negativo, si verifica un errore di dominio, impostando la variabile globale errno al valore EDOM."

Altri suggerimenti

Se il valore dD era 0,25 al posto della frazione che hai presentato allora si potrebbe vedere che è davvero prendendo il quarto radice invece di un esponenziale di un numero negativo. Il tuo frazione è vicino alla ottava radice. È necessario numeri complessi per esprimere la risposta che la funzione deve dare.

Questo è il risultato atteso, perché dN è negativo. Il risultato di pow (dN, dd); è definita solo se entrambi dN è positivo o se dD è un numero intero. In caso contrario, il risultato è un numero complesso. Ad esempio, pow (-1., 0,5) non funziona neanche.

Bene, 0,127,777777 millions è ciò che numero? la sua SMT come 1277777777 / (10 .... 0)

1277777777777 non è un numero pari, quindi -smt alla potenza di 12.777.777,777 mila è un numero negativo, e 10 ... 0th radice da non è un numero reale.

Sono ammissibili per prova a un dato di fatto che un ^ (b / c) = (c-esima radice da) (a ^ b)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top