elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Funcion Pow en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Funcion Pow en C?  (Leído 2,324 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
(Consulta) Funcion Pow en C?
« 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


En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: (Consulta) Funcion Pow en C?
« Respuesta #1 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


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: (Consulta) Funcion Pow en C?
« Respuesta #2 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!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines