Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


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 

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 

int main() {
  float x = 5, 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