Pregunta

¿Por qué es la salida de la dResult inválida?
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;  
}   
¿Fue útil?

Solución

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

double pow (double base, double exponent );

"Si la base es negativa y exponente no es un valor entero, o si la base es cero y el exponente es negativo, se produce un error de dominio, estableciendo la variable global errno con el valor EDOM."

Otros consejos

Si su valor dD fue 0,25 en lugar de la fracción has presentado a continuación, se podía ver que realmente está tomando la raíz cuarta vez de una exponencial de un número negativo. Su fracción está cerca de la octava raíz. Es necesario números complejos para expresar la respuesta que debe dar la función.

Ese es el resultado esperado porque dN es negativo. El resultado de pow (dN, dd); solamente se define si cualquiera dN es positivo o si dD es un número entero. De lo contrario, el resultado es un número complejo. Por ejemplo, pow (-1., 0,5) no funcionará bien.

Bueno, es lo que 0,127777777 número? su SMT como 1277777777 / (10 .... 0)

1277777777777 no es un número par, por lo tanto, -smt al poder de 12777777777 es un número negativo, y 10 ... 0 ª raíz de que no es un número real.

Estoy reffering a un hecho que a ^ (b / c) = (c-ésima raíz de) (a ^ b)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top