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

 

 


Tema destacado: Top 20 herramientas Hacking más populares de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con "cast" en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con "cast" en C  (Leído 7,549 veces)
diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Duda con "cast" en C
« en: 18 Febrero 2012, 17:08 pm »

Me parece que no entendi bien del todo eso del cast, ilustro mi idea con codigo a ver si alguien me puede corregir

Citar
Código:
#include<stdio.h>

main()
{
      float numero=12.5, numero2=1.2;
      int division;
     
      division=(int)numero/numero2;
     
      printf("El valor de la division es %d\n", division);
     
      system("pause");
      return 0;
}

Cuando ejecuto este código, la idea que tengo yo es, que antes de realizar la división numero/numero2, lo que realiza es convertir numero a un entero de valor 12, y numero2 a un entero de valor 1, por lo tanto al dividirlos se almacenaria el resultado, 12, en la variable división, pero sin embargo el programa me muestra como resultado 9.
A ver is alguien puede ayudarme


En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.666


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda con "cast" en C
« Respuesta #1 en: 18 Febrero 2012, 17:23 pm »

Para que haga lo que queres numero2 tiene que ser entero, a ver si asi lo ves mas claro:
Código
  1. division = (int)numero / (int)numero2;


« Última modificación: 18 Febrero 2012, 17:25 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Duda con "cast" en C
« Respuesta #2 en: 18 Febrero 2012, 17:30 pm »

ahhh vale, ya entiendo lo que me pones, gracias.
Ahora como curiosidad, como lo tenia yo, por que el resultado es 9??
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Caster


Desconectado Desconectado

Mensajes: 787


Ver Perfil WWW
Re: Duda con "cast" en C
« Respuesta #3 en: 18 Febrero 2012, 17:31 pm »

Yo sabía lo de Eternal Idol pero, me entra la imsa duda que a diego.

Saludos
En línea

diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Duda con "cast" en C
« Respuesta #4 en: 18 Febrero 2012, 17:32 pm »

claro, es que 12/1.2=10 no se por que pone 9 :S
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.666


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda con "cast" en C
« Respuesta #5 en: 18 Febrero 2012, 17:52 pm »

Es un problema de precision, si usas double te va a dar 10, con float la division da algo asi como 9.99999960263572 ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Duda con "cast" en C
« Respuesta #6 en: 19 Febrero 2012, 16:59 pm »

Sí. Como bien dice Eternal, a nivel muy bajo, el procesador tiene problemas de precisión. Si tienes que hacer casts con el int, por ejemplo, a veces va bien sumar 0.0001 o algo así. Cifras bajas.. Recuerda que un cast NO es redondear, es TRUNCAR (quitar todos los decimales a secas). Si tienes 10.0001 y haces un cast de int, te saldra 10, pero si tienes 9.99999, te quedaras con el 9.

Un abrazo.
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