Realizar Operaciones de Redondeo en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a realizar operaciones de redondeo en programación C. Empezarás declarando variables de punto flotante, luego explorarás el uso de diversas funciones de redondeo, como round(), floor(), y ceil(), para manipular los valores. Finalmente, imprimirás los resultados redondeados para observar los diferentes comportamientos de redondeo.

Este laboratorio cubre las habilidades fundamentales de operaciones aritméticas básicas en C, proporcionando una base sólida para trabajar con números de punto flotante y sus técnicas de redondeo.

Declarar Variables de Punto Flotante

En este paso, aprenderás a declarar e inicializar variables de punto flotante en C, esenciales para realizar operaciones de redondeo.

Primero, crearemos un nuevo archivo C para trabajar con variables de punto flotante:

cd ~/project
nano rounding.c

Ahora, agrega el siguiente código al archivo:

#include <stdio.h>

int main() {
    // Declarar variables de punto flotante
    float num1 = 3.7;
    double num2 = 4.2;

    // Imprimir los valores originales
    printf("Valor flotante original: %.1f\n", num1);
    printf("Valor doble original: %.1f\n", num2);

    return 0;
}

Compila y ejecuta el programa:

gcc rounding.c -o rounding
./rounding

Salida de ejemplo:

Valor flotante original: 3.7
Valor doble original: 4.2

Desglose del código:

  • Usamos float para números de punto flotante de precisión simple.
  • Usamos double para números de punto flotante de doble precisión.
  • El especificador de formato %.1f muestra el número con un decimal.
  • num1 y num2 se inicializan con valores decimales.

Usar Funciones (p. ej., round, floor, ceil) para Redondear Valores

En este paso, aprenderás a usar funciones de redondeo en C para manipular números de punto flotante. Modificaremos el archivo rounding.c anterior para demostrar diferentes técnicas de redondeo.

Abre el archivo existente:

cd ~/project
nano rounding.c

Reemplaza el contenido anterior con el siguiente código:

#include <stdio.h>
#include <math.h>

int main() {
    // Declarar variables de punto flotante
    float num1 = 3.7;
    double num2 = 4.2;

    // Redondear valores usando diferentes funciones
    printf("Valores originales:\n");
    printf("num1: %.1f, num2: %.1f\n\n", num1, num2);

    // Usando la función round()
    printf("Función round():\n");
    printf("round(num1): %.0f\n", round(num1));
    printf("round(num2): %.0f\n\n", round(num2));

    // Usando la función floor()
    printf("Función floor():\n");
    printf("floor(num1): %.0f\n", floor(num1));
    printf("floor(num2): %.0f\n\n", floor(num2));

    // Usando la función ceil()
    printf("Función ceil():\n");
    printf("ceil(num1): %.0f\n", ceil(num1));
    printf("ceil(num2): %.0f\n", ceil(num2));

    return 0;
}

Compila el programa con la biblioteca matemática:

gcc rounding.c -o rounding -lm
./rounding

Salida de ejemplo:

Valores originales:
num1: 3.7, num2: 4.2

Función round():
round(num1): 4
round(num2): 4

Función floor():
floor(num1): 3
floor(num2): 4

Función ceil():
ceil(num1): 4
ceil(num2): 5

Puntos clave sobre las funciones de redondeo:

  • round(): Redondea al entero más cercano.
  • floor(): Redondea hacia abajo al entero más cercano.
  • ceil(): Redondea hacia arriba al entero más cercano.
  • El flag -lm se utiliza para enlazar la biblioteca matemática al compilar.
  • El especificador de formato %.0f muestra enteros sin decimales.

Imprimir Resultados Redondeados

En este paso, aprenderás a formatear e imprimir resultados redondeados con diferentes niveles de precisión y opciones de formato.

Abre el archivo existente:

cd ~/project
nano rounding.c

Actualiza el código para demostrar varias técnicas de impresión:

#include <stdio.h>
#include <math.h>

int main() {
    // Declarar variables de punto flotante
    float num1 = 3.7;
    double num2 = 4.2;

    // Demostración de redondeo con diferentes formatos de impresión
    printf("Demostración de Redondeo:\n");

    // Imprimir valores redondeados con diferente precisión
    printf("1. Valores redondeados:\n");
    printf("   round(num1) = %.0f\n", round(num1));
    printf("   round(num2) = %.0f\n\n", round(num2));

    // Imprimir con ancho de campo y precisión
    printf("2. Valores redondeados formateados:\n");
    printf("   num1 redondeado con ancho: %5.1f\n", round(num1));
    printf("   num2 redondeado con ancho: %5.1f\n\n", round(num2));

    // Imprimir representaciones enteras y de punto flotante
    printf("3. Representaciones enteras y de punto flotante:\n");
    printf("   num1 como entero: %d\n", (int)round(num1));
    printf("   num2 como entero: %d\n", (int)round(num2));

    return 0;
}

Compila y ejecuta el programa:

gcc rounding.c -o rounding -lm
./rounding

Salida de ejemplo:

Demostración de Redondeo:
1. Valores redondeados:
   round(num1) = 4
   round(num2) = 4

2. Valores redondeados formateados:
   num1 redondeado con ancho:   4.0
   num2 redondeado con ancho:   4.0

3. Representaciones enteras y de punto flotante:
   num1 como entero: 4
   num2 como entero: 4

Técnicas clave de impresión:

  • %.0f: Elimina los decimales.
  • %5.1f: Establece el ancho de campo y la precisión.
  • El casting a (int) convierte a entero.
  • Diferentes especificadores de formato controlan la apariencia de la salida.

Resumen

En este laboratorio, aprendiste a declarar variables de punto flotante, incluyendo float y double, y cómo utilizar diversas funciones de redondeo como round(), floor(), y ceil() para manipular estos valores. Imprimiste los valores originales y luego utilizaste las funciones de redondeo para mostrar los resultados redondeados. Esto te permitió comprender los diferentes comportamientos de estas funciones y cómo se pueden aplicar para redondear números hacia arriba, hacia abajo o al entero más cercano.