Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 19 Julio 2016, 20:26 PM

Título: (Consulta) Funcion Pow en C?
Publicado por: palacio29 en 19 Julio 2016, 20:26 PM
Hola

Queria saber porque el siguiente codigo

printf ("%.2lf\n",pow(25.0,1/2));


En vez de dar el valor 5.00, da el valor 1.00

Muchas gracias
Título: Re: (Consulta) Funcion Pow en C?
Publicado por: crack81 en 19 Julio 2016, 21:22 PM
El problema esa en la division ya que estas haciendo un division de numeros enteros por ende da como resultado un numero entero.

Ejemplo

1/2 en C/C++ da como resultado 0 ya que no esta especificando que es un numero real

Para obtener el valor correcto hay que hacer lo siguiente

1.0/2.0 esto si nos devuelve 0.5

En especifico en tu problema al hacer pow(25.0,1/2); realmente esas haciendo 25.0^0=1
recordar que todo numero a la potencia 0 es 1

Por ultimo para que no tengas problemas similares cuando uses variables y tengas que manejar numeros decimales utilizas los tipos de datos float y double ya que hacer esto:

Código (cpp) [Seleccionar]
int a=1;
int b=2;
float total=a/b;


seguiera resultado un 0 ya que esta dividiendo numeros enteros para un correcto resultado cambia el tipo de dato a float o double

Código (cpp) [Seleccionar]
float a=1;
float b=2;
float total=a/b;


Tu programa:
Código (cpp) [Seleccionar]
int main()
{
    float p=pow(25.0,1.0/2.0);
    cout<<p<<endl;
    return 0;
}


Saludosss
Título: Re: (Consulta) Funcion Pow en C?
Publicado por: palacio29 en 19 Julio 2016, 21:46 PM
Cita de: crack81 en 19 Julio 2016, 21:22 PM
El problema esa en la division ya que estas haciendo un division de numeros enteros por ende da como resultado un numero entero.

Ejemplo

1/2 en C/C++ da como resultado 0 ya que no esta especificando que es un numero real

Para obtener el valor correcto hay que hacer lo siguiente

1.0/2.0 esto si nos devuelve 0.5

En especifico en tu problema al hacer pow(25.0,1/2); realmente esas haciendo 25.0^0=1
recordar que todo numero a la potencia 0 es 1

Por ultimo para que no tengas problemas similares cuando uses variables y tengas que manejar numeros decimales utilizas los tipos de datos float y double ya que hacer esto:

Código (cpp) [Seleccionar]
int a=1;
int b=2;
float total=a/b;


seguiera resultado un 0 ya que esta dividiendo numeros enteros para un correcto resultado cambia el tipo de dato a float o double

Código (cpp) [Seleccionar]
float a=1;
float b=2;
float total=a/b;


Tu programa:
Código (cpp) [Seleccionar]
int main()
{
    float p=pow(25.0,1.0/2.0);
    cout<<p<<endl;
    return 0;
}


Saludosss


Excelente muchas gracias!!