Foro de elhacker.net

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
  1. int a=1;
  2. int b=2;
  3. 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
  1. float a=1;
  2. float b=2;
  3. float total=a/b;

Tu programa:
Código
  1. int main()
  2. {
  3.    float p=pow(25.0,1.0/2.0);
  4.    cout<<p<<endl;
  5.    return 0;
  6. }

Saludosss


Título: Re: (Consulta) Funcion Pow en C?
Publicado por: palacio29 en 19 Julio 2016, 21:46 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
  1. int a=1;
  2. int b=2;
  3. 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
  1. float a=1;
  2. float b=2;
  3. float total=a/b;

Tu programa:
Código
  1. int main()
  2. {
  3.    float p=pow(25.0,1.0/2.0);
  4.    cout<<p<<endl;
  5.    return 0;
  6. }

Saludosss


Excelente muchas gracias!!