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.
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.
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.
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.
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;
}
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.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.