duda al igualar un flotante a "1/2" regresa solo la parte entera porque ?

Iniciado por ATARI2341, 17 Diciembre 2017, 02:20 AM

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

ATARI2341

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?

								

engel lex

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

int a = 3;
int b = 2;
float c;

c = a/b; //c = 1

//promoción por declaración
float d = a;
c = d/b;// c = 1.333333

//promoción por casteo de tipos

c = float(a)/b;// c = 1.333333
//o
c = a/float(b);// c = 1.333333

//igual aplica para constantes

c = 3/2; // c = 1
c = 3.0/2; // c=1.333333
c = 3/2.0; // c=1.333333
c = 3.0/2.0; // c=1.333333


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.