2.4. Operador de molde: (tipo) operando
Curso: Fundamentos de programación en C, por Nacho Cabanes
2.4. Operador de molde: (tipo) operando
Si tenemos dos números enteros y hacemos su división, el resultado que obtenemos es otro número entero, sin decimales, aunque lo guardemos en una variable real :
float f = 5/2; /* f valdrá 2.000000 */
Esto se debe a que la operación se realiza entre números enteros, se obtiene un resultado que es un número entero, y ese valor obtenido se asigna a la variable “float”... pero ya es demasiado tarde.
Para evitar ese tipo de problemas, podemos indicar que queremos convertir esos valores a numeros reales. Cuando son números, basta con que indiquemos algún decimal:
float f = 5.0/2.0; /* ahora f valdrá 2.500000 */
y si son variables, añadiremos antes de ellas “(float)” para que las considere como números reales antes de trabajar con ellas:
float f = (float) x / (float) y;
Vamos a verlo mejor en un programa completo:
/*---------------------------*/ /* Ejemplo en C nº 11: */ /* c011.c */ /* */ /* Conversion de int a */ /* float */ /* */ /* Curso de C, */ /* Nacho Cabanes */ /*---------------------------*/ #include <stdio.h> int main() { int n1 = 5, n2 = 2; float division1, division2; printf("Mis numeros son %d y %d", n1, n2); division1 = n1/n2; printf(" y su division es %f", division1 ); division2 = (float)n1 / (float)n2; printf(" pero si convierto antes a float: %f", division2 ); return 0; }
que tendría como resultado
Mis números son 5 y 2 y su division es 2.000000 pero si convierto antes a float: 2.500000
De igual modo, podemos convertir un “float” a “int” para despreciar sus decimales y quedarnos con la parte entera:
/*---------------------------*/ /* Ejemplo en C nº 12: */ /* c012.c */ /* */ /* Conversion de float a */ /* int */ /* */ /* Curso de C, */ /* Nacho Cabanes */ /*---------------------------*/ #include <stdio.h> int main() { float x = 5,/span> y = 3.5; float producto; printf("Mis numeros son %3.1f y %3.1f", x, y); producto = x*y; printf(" y su producto es %3.1f", producto); printf(", sin decimales seria %d", (int) producto); return 0; }
que daría
Mis números son 5.0 y 3.5 y su producto es 17.5, sin decimales sería 17
Actualizado el: 23-07-2014 15:10