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
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:
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
float a=1;
float b=2;
float total=a/b;
Tu programa:
int main()
{
float p=pow(25.0,1.0/2.0);
cout<<p<<endl;
return 0;
}
Saludosss
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:
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
float a=1;
float b=2;
float total=a/b;
Tu programa:
int main()
{
float p=pow(25.0,1.0/2.0);
cout<<p<<endl;
return 0;
}
Saludosss
Excelente muchas gracias!!