Redondear números en C

Introducción

El lenguaje de programación C provee métodos para redondear números.

Vamos a estudiarlos a los 3 y veremos cómo redondear según el número, redondear hacia abajo y redondear hacia arriba.

Las funciones que permiten eso vienen en la librería math.h.

Recuerda que esto mismo hicimos con JavaScript hace algún tiempo.

Librería y explicación

La librería la incluimos con #include<math.h>. Como lo dije, veremos 3 métodos:

Redondear según el número: por ejemplo, si el número después del punto es 5, se redondea hacia abajo. En caso de que no, se redondea hacia arriba.

Por poner un ejemplo, 0.5 (y los mayores a él, siempre y cuando sean menor que 1) se redondea a 1 y 0.4999 (así como los menores a él) se redondea a 0.

Redondear hacia abajo: no importa la parte fraccionaria, siempre se redondeará hacia abajo.

Por poner un ejemplo, tanto 0.9, 0.5 y 0.1 se redondean a 0.

Finalmente, redondear hacia arriba: es como la anterior, pero ahora todos los números se redondean al siguiente entero próximo. 0.1, 0.5 y 0.9 se redondean a 1.

Eso fue por poner ejemplos, pero no sólo funcionan con números menor que 1, funcionan con cualquiera de ellos.

Redondear números en C con round

Veamos el primer método en donde depende de la parte fraccionaria el redondeo del número. Para esto, C proporciona el método round; que recibe un número y lo devuelve redondeado. Algunos ejemplos:

0.5 redondeado con round es: 1.00
50.48 redondeado con round es: 50.00
20.24 redondeado con round es: 20.00
9.7 redondeado con round es: 10.00
10.5 redondeado con round es: 11.00

Aquí un programa que imprime eso:

/*
    Redondear números en C con round
    @author parzibyte
    parzibyte.me/blog
*/
#include<stdio.h>
#include<math.h>
 
int main(){
    printf("0.5 redondeado con round es: %0.2f\n", round(0.5));
    printf("50.48 redondeado con round es: %0.2f\n", round(50.48));
    printf("20.24 redondeado con round es: %0.2f\n", round(20.24));
    printf("9.7 redondeado con round es: %0.2f\n", round(9.7));
    printf("10.5 redondeado con round es: %0.2f\n", round(10.5));
}

Redondear hacia abajo con floor

Ya vimos arriba que round se usa para redondear según el número, pero si queremos que siempre se redondee hacia abajo usamos floor. Veamos este ejemplo:

/*
    Redondear números hacia abajo en C con floor
    @author parzibyte
    parzibyte.me/blog
*/
#include<stdio.h>
#include<math.h>
 
int main(){
    printf("0.5 redondeado con floor es: %0.2f\n", floor(0.5));
    printf("50.99 redondeado con floor es: %0.2f\n", floor(50.99));
    printf("20.24 redondeado con floor es: %0.2f\n", floor(20.24));
    printf("0.1 redondeado con floor es: %0.2f\n", floor(0.1));
    printf("10.5 redondeado con floor es: %0.2f\n", floor(10.5));
}

La salida es:

0.5 redondeado con floor es: 0.00
50.99 redondeado con floor es: 50.00
20.24 redondeado con floor es: 20.00
0.1 redondeado con floor es: 0.00
10.5 redondeado con floor es: 10.00

Usar ceil para redondear hacia arriba: lo contrario a floor

ceil funciona para hacer lo contrario a floor; esto es redondear hacia arriba un número.

Aquí el código que es muy parecido al de floor:

/*
    Redondear números hacia arriba en C con ceil
    @author parzibyte
    parzibyte.me/blog
*/
#include<stdio.h>
#include<math.h>
 
int main(){
    printf("0.5 redondeado con ceil es: %0.2f\n", ceil(0.5));
    printf("50.99 redondeado con ceil es: %0.2f\n", ceil(50.99));
    printf("20.24 redondeado con ceil es: %0.2f\n", ceil(20.24));
    printf("0.1 redondeado con ceil es: %0.2f\n", ceil(0.1));
    printf("10.5 redondeado con ceil es: %0.2f\n", ceil(10.5));
}

Cuando ejecutamos este programa, se imprime lo siguiente:

0.5 redondeado con ceil es: 1.00
50.99 redondeado con ceil es: 51.00
20.24 redondeado con ceil es: 21.00
0.1 redondeado con ceil es: 1.00
10.5 redondeado con ceil es: 11.00

¿Cuál usar?

Todo depende de nuestras necesidades.

Escribí esta entrada para explicar la función floor que usaré en un post de búsqueda binaria en C que estoy preparando; ahí necesito siempre redondear hacia abajo y esta función viene de maravilla.

Conclusión y notas finales

Recordemos que en este caso únicamente estamos imprimiendo. Pero como en todo lenguaje, podemos asignar el resultado a una variable.

Por ejemplo, veamos este fragmento de código:

/*
    Redondear números con los 3 métodos en C
    @author parzibyte
    parzibyte.me/blog
*/
#include<stdio.h>
#include<math.h>
 
int main(){
    float numero = 28.11;
    float redondeado = round(numero);
    float redondeadoHaciaAbajo = floor(numero);
    float redondeadoHaciaArriba = ceil(numero);
    printf("%0.2f con round es %0.2f, con floor %0.2f y con ceil %0.2f", numero, redondeado, redondeadoHaciaAbajo, redondeadoHaciaArriba);
}

Y no sólo eso, también podemos trabajar con el tipo de dato double o long double para mayor precisión.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

3 comentarios en “Redondear números en C”

  1. Pingback: Programa en C: búsqueda binaria recursiva y secuencial en arreglos - Parzibyte's blog

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *