Saltar al contenido principal

Cómo redondear un número en Python

Descubre tres técnicas sencillas para redondear números en Python: utilizar math.ceil() del módulo math, utilizar el módulo decimal y NumPy.
Actualizado 29 jul 2024  · 7 min de lectura

Python, como lenguaje de programación especialmente versátil, ofrece muchas técnicas diferentes para redondear números y redondear en general. El redondeo es una técnica de programación imprescindible, sobre todo para quienes trabajan en finanzas o estadística. Los métodos siguientes son muy parecidos para muchas aplicaciones prácticas, pero hay algunas diferencias sutiles y clave. En este artículo, te mostraré varios métodos para redondear números y luego hablaré de las diferencias. 

Si aspiras a ser analista o científico de datos, te recomiendo encarecidamente que sigas el curso Introducción a Python de DataCamp para iniciarte en la programación con Python. La Hoja de trucos de Python para principiantes también será una referencia útil.

Respuesta rápida: Cómo redondear en Python

La función math.ceil() del módulo math ofrece un método sencillo para redondear un número en Python. Esta técnica garantiza que el número se redondee siempre al siguiente entero mayor que el original. El siguiente código imprime 4.

# Import the math module to access math.ceil() function
import math
number = 3.14
rounded_up = math.ceil(number)
print(rounded_up)

Comprender los fundamentos del redondeo

Redondear números consiste en ajustar los dígitos para obtener un valor aproximado. Este concepto es vital a la hora de simplificar los números para que sea más fácil trabajar con ellos. Los casos de uso habituales para redondear números son los siguientes:

  • Cálculos financieros: El redondeo se utiliza a menudo en los cálculos financieros para garantizar estimaciones conservadoras. Por ejemplo, al calcular los tipos de interés o los impuestos, el redondeo al céntimo más próximo garantiza que no se subestimen los valores.
  • Análisis de Datos y Estadística: Los informes de datos suelen seguir convenciones específicas para cosas como etiquetar los intervalos de confianza e informar de los valores p. Esto se debe a que la precisión innecesaria puede distraer. 
  • Codificación y algoritmos: Las funciones de redondeo se utilizan para controlar el nivel de precisión en los cálculos, lo que puede ser crucial para el rendimiento y para evitar errores de coma flotante.

Es importante recordar que si redondeas los números antes de realizar los cálculos, cambiarás los resultados y, a veces, los cambios serán más significativos o sorprendentes de lo que esperas. Como el redondeo implica ajustar los números a valores aproximados, los errores se acumulan, sobre todo cuando se manejan grandes conjuntos de datos. Si redondeas todos los números antes de multiplicar, es probable que el resultado sea mayor que si hubieras utilizado los números originales. Esto se debe a que cada número ligeramente mayor aumenta el producto total. 

Por otra parte, si redondeas todos los números antes de realizar la división, el impacto puede ser diferente dependiendo de si se redondea el dividendo o el divisor. En cualquier caso, redondear antes de realizar operaciones matemáticas puede afectar a los resultados de forma sorprendente si no tienes cuidado. 

Métodos para redondear un número en Python

Python utiliza el módulo math, las bibliotecas NumPy y Pandas para ofrecer distintos métodos de redondeo de números.

Redondea utilizando el módulo matemático

La función math.ceil() de math se utiliza para redondear un número al entero más próximo. La sintaxis se muestra a continuación.

# Import the math module to access math.ceil() function
import math
math.ceil(number)

Al redondear un número positivo utilizando la función math.ceil(), la salida devuelve un número entero mayor que el número original. El siguiente código imprime 4.

# Import the math module to access math.ceil() function
import math
number = 3.14
rounded_up = math.ceil(number)
print(rounded_up)

Del mismo modo, al redondear números negativos, la función math.ceil() devuelve un entero negativo mayor que el valor original. El siguiente código imprime -3.

# Import the math module to access math.ceil() function
import math
number = -3.14
rounded_up = math.ceil(number)
print(rounded_up)

Redondea utilizando el módulo decimal para mayor precisión

El módulo decimal de Python es útil para redondear números flotantes a decimales precisos. Es importante para conseguir un redondeo decimal preciso, especialmente en cálculos financieros.

Puedes utilizar el módulo decimal para crear objetos Decimal a partir de cadenas, números enteros y números en coma flotante. Sin embargo, no se recomienda crear objetos Decimal utilizando números en coma flotante, debido a posibles problemas de precisión. Los ejemplos siguientes muestran los distintos métodos para crear objetos Decimal.

# Import the decimal module to access Decimal function
from decimal import Decimal
d1 = Decimal("3.14159")
print(d1)
# Import the decimal module to access Decimal function
from decimal import Decimal
d3 = Decimal(3.14159)
print(d3)

El módulo decimal ofrece los siguientes métodos para redondear números:

  • ROUND_UP: Redondea siempre a partir de cero.

  • ROUND_CEILING: Redondea siempre hacia el infinito positivo.

Con el módulo decimal, puedes redondear números a la precisión deseada utilizando el método .quantize(). En el ejemplo siguiente, se ha utilizado el método ROUND_UP para redondear el decimal al entero más próximo a cero. Puedes conseguirlo indicando 1 en el método Decimal para mostrar que quieres redondear a un valor entero.

# Import the Decimal class and the ROUND_UP rounding mode from the decimal module
from decimal import Decimal, ROUND_UP

# Create a Decimal object from a string representation of a floating-point number
d = Decimal("-3.14159")

# Round the Decimal object to nearest integer using the ROUND_UP rounding mode
rounded_d_int = d.quantize(Decimal("1"), rounding=ROUND_UP)
print(rounded_d_int) # prints -4

El método ROUND_CEILING del módulo Decimal también permitirá redondear un número a un entero superior.

# Import the Decimal class and the ROUND_CEILING rounding mode from the decimal module
from decimal import Decimal, ROUND_CEILING

# Create a Decimal object from a string representation of a floating-point number
d = Decimal("-3.14159")

# Round the Decimal object to nearest integer using ROUND_CEILING rounding mode
rounded_d_int = d.quantize(Decimal("1"), rounding=ROUND_CEILING)
print(rounded_d_int) # prints -3

Redondear matrices con NumPy

NumPy es una potente biblioteca de Python que ayuda a realizar operaciones con matrices y arrays de gran tamaño. Es esencial en la ciencia de datos por su eficacia y comodidad de cálculo. Una de las operaciones que ofrece NumPy es el redondeo de números. Veamos el método np.ceil() que se puede utilizar para redondear los elementos de una matriz al entero más próximo. La sintaxis de np.ceil() es sencilla y se muestra a continuación.

np.ceil(array)

El siguiente ejemplo muestra cómo redondear los elementos de una matriz utilizando el método np.ceil().

# Import the numpy module and alias it as np for convenience
import numpy as np

# Create a numpy array with floating-point numbers
array = np.array([3.14, 2.72, 1.61])

# Apply the ceiling function to each element in the numpy array, rounding each number up to the nearest integer
rounded_up_array = np.ceil(array)
print(rounded_up_array) # 4, 3, 2

Resumen comparativo

Aquí tienes una tabla que compara distintos métodos de redondeo en Python:

Método Puntos fuertes Puntos débiles Mejor caso práctico
math módulo Ofrece opciones específicas de redondeo con math.ceil() Requiere el módulo matemático y no es adecuado para escenarios complejos de redondeo. Cálculos que implican redondeos específicos, incluido el redondeo hacia arriba.
decimal módulo Gran precisión y exactitud Complejo de utilizar Cálculos financieros
NumPy Eficaz para redondear matrices utilizando np.ceil() Requiere la biblioteca NumPy Análisis de datos en grandes conjuntos de datos.

Manejar el sesgo de redondeo

El sesgo de redondeo se refiere a la distorsión de los valores numéricos cuando se utilizan métodos de redondeo. Suele ocurrir porque al redondear un número se ajusta a un valor aproximado mayor o menor que su valor original. Por tanto, el sesgo de redondeo puede disminuir la precisión y la exactitud, especialmente en los análisis estadísticos y los cálculos financieros.

Redondear la mitad

El método de redondeo a la mitad consiste en redondear un número hacia arriba si está exactamente a la mitad entre dos valores posibles. Por ejemplo, 2,5 se redondeará a 3. La ventaja de este método es que es fácil de entender y coherente con lo que se suele enseñar en las escuelas. En el código siguiente, creamos una función para comprobar si un decimal es exactamente 0,5, y redondeamos hacia arriba si lo es; en caso contrario, redondeamos hacia abajo.

# Create a function to check if a decimal is exactly 0.5 and round up if true
def round_half_up(n):
    if n - int(n) == 0.5:
        return int(n) + 1
    return round(n)
# Example usage
example_number = 2.5
rounded_number = round_half_up(example_number)
print(rounded_number)

Redondear la mitad a la par (redondeo bancario)

Redondear la mitad a la par, o redondeo bancario, es un método de redondeo utilizado para minimizar el sesgo. Cuando un número está exactamente a medio camino entre dos enteros, se redondea al entero par más próximo. Este método ayuda a equilibrar el proceso de redondeo, evitando un sesgo consistente hacia arriba o hacia abajo.

Si omites el segundo argumento, el método incorporado round redondea por defecto la mitad a números pares.

# Python round() method to round half to even
print(round(2.5)) # 2
print(round(3.5)) # 4
print(round(-2.5)) # -2

Conclusión

El redondeo de números es una técnica importante en programación, ya que facilita el manejo de valores numéricos. También es esencial en el análisis estadístico y los cálculos financieros, ya que simplifica los valores para mejorar la legibilidad y la interpretación. Es importante aprender los distintos métodos de redondeo y elegir los métodos adecuados en función de los requisitos específicos de la tarea. 

Como analista de datos, te animo a que practiques los distintos métodos de redondeo para comprender su aplicación práctica en distintas tareas. Te recomiendo que pruebes los cursos de Fundamentos de Python y Programación en Python de DataCamp para mejorar tus conocimientos de programación. Por último, el itinerario profesional de Desarrollador Python te ayudará a aprender conocimientos avanzados de Python para destacar entre otros desarrolladores.

Preguntas frecuentes

¿Cómo se redondea al int más próximo en Python?

Puedes utilizar la función math.ceil() del módulo math para redondear al int más próximo en Python.

¿Qué es el sesgo de redondeo?

El sesgo de redondeo se produce cuando hay valores inexactos debido a la distorsión de los números al redondear.

¿Qué es la mitad redonda del par?

El método de redondeo medio a par, o redondeo del banquero, consiste en redondear un número exactamente a la mitad entre dos enteros al entero par más próximo.

¿Cuál es la diferencia entre redondear y truncar?

Redondear un número consiste en ajustar un número en función del valor de la parte fraccionaria. Truncar un número elimina la parte fraccionaria del número sin redondear.

¿Qué pasa si quiero redondear hacia abajo en lugar de redondear hacia arriba en Python?

Si quieres redondear hacia abajo en lugar de redondear hacia arriba en Python, puedes utilizar la función math.floor(). Mientras que math.ceil() redondea un número hacia arriba al entero más próximo, math.floor() redondea un número hacia abajo al entero más próximo. 

Temas

Aprende Python con DataCamp

curso

Introduction to Python

4 hr
5.7M
Master the basics of data analysis with Python in just four hours. This online course will introduce the Python interface and explore popular packages.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

tutorial

Matrices en Python

Matrices en Python con ejemplos de código. Aprende a crear e imprimir matrices con Python NumPy hoy mismo.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Exponentes en Python: Guía completa para principiantes

Domina los exponentes en Python utilizando diversos métodos, desde funciones integradas hasta potentes bibliotecas como NumPy, y aprovéchalos en situaciones reales para profundizar en su comprensión.
Satyam Tripathi's photo

Satyam Tripathi

9 min

tutorial

21 herramientas esenciales de Python

Conozca las herramientas esenciales de Python para el desarrollo de software, raspado y desarrollo web, análisis y visualización de datos y aprendizaje automático.
Abid Ali Awan's photo

Abid Ali Awan

6 min

tutorial

Formato f-string en Python

Conozca la técnica de formateo f-string en Python 3.6. En este tutorial, verá qué ventajas ofrece y repasará algunos casos de uso de ejemplo.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

5 min

See MoreSee More