Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ATARI2341 en 17 Diciembre 2017, 02:20 am



Título: duda al igualar un flotante a "1/2" regresa solo la parte entera porque ?
Publicado por: ATARI2341 en 17 Diciembre 2017, 02:20 am
me di cuenta que los float al igualarlos a una división directa , nos regresa solamente el valor entero de la misma y me quede :huh: ¿porque?


Título: Re: duda al igualar un flotante a "1/2" regresa solo la parte entera porque ?
Publicado por: engel lex en 17 Diciembre 2017, 02:41 am
depende de tu codigo, si haces int/int el resultado será un int, los resutlados de los operadores serán del tipo de los operandos, para evitar esto se usa promocion de operandos, es decir, se usa un tipo más complejo tal que el resultado se "ascienda" al tipo más complejo, es decir float/int = float o int/float = float

para hacer la promoción hay 2 vias: 1 declarar una variable como float inicialmente, 2 casting de tipos

a nivel práctico

Código
  1. int a = 3;
  2. int b = 2;
  3. float c;
  4.  
  5. c = a/b; //c = 1
  6.  
  7. //promoción por declaración
  8. float d = a;
  9. c = d/b;// c = 1.333333
  10.  
  11. //promoción por casteo de tipos
  12.  
  13. c = float(a)/b;// c = 1.333333
  14. //o
  15. c = a/float(b);// c = 1.333333
  16.  
  17. //igual aplica para constantes
  18.  
  19. c = 3/2; // c = 1
  20. c = 3.0/2; // c=1.333333
  21. c = 3/2.0; // c=1.333333
  22. c = 3.0/2.0; // c=1.333333
  23.