Algoritmos

Redondear si parte decimal es 0.5

Al redondear números en cualquier lenguaje de programación como puede ser Python, Java, JavaScript, PHP, C, etcétera podemos usar floor, round y ceil para redondear hacia abajo, dependiendo del número o hacia arriba.

Redondear si parte decimal termina en 0.5 – Ejemplo de código

Sin embargo cuando usamos round para redondear dependiendo del número, pasa algo. Si el número termina en .5 sube al siguiente, por ejemplo el 6.5 sube a 7.

En ocasiones necesitamos que el número se redondee hacia abajo si su parte decimal es 0.5 o menos, y se redondee hacia arriba si no lo es.

Así que en este post te mostraré cómo redondear dependiendo si el número termina en 0.5 sin importar el lenguaje de programación.

El algoritmo para redondear

Primero debemos sacar la parte entera del número, redondeado hacia abajo. Después sacar la diferencia del número original y su parte decimal para extraer el sobrante.

Si el sobrante es menor o igual a 0.5, redondeamos el número original hacia abajo. Si no, hacia arriba.

Pseudocódigo

En algo parecido a pseudocódigo o una fórmula, quedaría así:

función redondear(numero) {
    // .5 o menos, baja. Si no, sube
    diferencia = numero - redondearHaciaAbajo(numero);
    if (diferencia <= 0.5) {
        return redondearHaciaAbajo(numero);
    } else {
        return redondearHaciaArriba(numero);
    }
}

Obviamente en lugar de usar funciones de redondeo puedes convertir el valor decimal a entero, además de que para redondear hacia arriba o hacia abajo solo tendrías que sumar o restar 1.

Ejemplo en C

Para acompañar el post con algo de código veamos la siguiente función en C:

/*
    https://parzibyte.me/blog
*/#include <stdio.h>

int redondear(double numero)
{
    int numeroEntero = (int)numero;
    double diferencia = numero - numeroEntero;
    if (diferencia <= 0.5)
    {
        return numeroEntero;
    }
    else
    {
        return numeroEntero + 1;
    }
}

int main(void)
{
    printf("%d\n", redondear(6.5)); // 6
    printf("%d\n", redondear(6.6)); // 7
    return 0;
}

Ejemplo con JavaScript

La misma función pero en JavaScript usando Math queda así:

/*
 https://parzibyte.me/blog
*/const redondear = numero => {
    // .5 o menos, baja. Si no, sube
    const diferencia = numero - parseInt(numero);
    if (diferencia <= 0.5) {
        return Math.floor(numero);
    } else {
        return Math.ceil(numero);
    }
}
console.log(redondear(9.5)); // 9
console.log(redondear(9.6)); // 10

Recuerda que ya te he explicado lo que hace ceil y floor en otro post.

Y con eso terminamos el post. Obviamente la función se puede portar a otros lenguajes de programación pues es muy simple.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

4 semanas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

2 meses hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

2 meses hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

2 meses hace