(Consulta) Funcion Pow en C?

Iniciado por palacio29, 19 Julio 2016, 20:26 PM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

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

crack81

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
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

palacio29

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!!